home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
APDL Eductation Resources
/
APDL Eductation Resources.iso
/
programs
/
misc
/
howmany
/
!HowMany
/
ShellLibRT
(
.txt
)
< prev
next >
Encoding:
Amiga
Atari
Commodore
DOS
FM Towns/JPY
Macintosh
Macintosh JP
NeXTSTEP
RISC OS/Acorn
UTF-8
Wrap
RISC OS BBC BASIC V Source
|
1994-12-03
|
103.6 KB
|
3,847 lines
>EvntShell:ShellLib
Squished by Lofty's !Shrink vsn 3.01 on 03-Dec-94
shell_LibraryVersion:=1.38*&64
shell_DefineConstants:G=&D00:M=&903:_MSE_SELECTBUT=4:_MSE_MENUBUT=2:_MSE_ADJUSTBUT=1:t=0:r=1:w=2:x=3:Z=0:a=1:b=2:c=3:d=4:e=6:W=7:Y=8:n=9:o=&A:s=&E:X=&502:R=&400C0:S=&400C1:T=&400C2:U=&400C3:V=&400C7:_POPUP_TYPE_TEXT=0:_POPUP_TYPE_WIMPCOLOUR=1
AJ_POPUP_TYPE_DATEPICK=2:_POPUP_TYPE_FONTPICK=4:_POPUP_TYPE_COLOUR24=8:
shell_Error:
FA%,EA$:
&606C2:
1<<31)
shell_FatalError
shell_OSCheckVersion(3)
shell_FileExists("Resources:$.Resources.Edit.ThrowBack")
("Set Basic$File <"+
shell_GetAppName+"$BasicFile>"):
"Edit:ThrowBack"
shell_ErrorBox("Unexpected error:- "+
$+" (Internal error code "+
+")")
$:FA%=
$,"in "+
34+"EvntShell:ShellLib"):
FA%>0
$,FA%-1)
shell_ErrorBox(EA$)
shell_OK(fA$):
G,fA$
shell_FatalError:
&606C2:
shell_OSCheckVersion(3)
shell_FileExists("Resources:$.Resources.Edit.ThrowBack")
1<<31)
shell_Exit
("Set Basic$File <"+
shell_GetAppName+"$BasicFile>"):
"Edit:ThrowBack"
shell_ErrorBox("Unexpected error:- "+
$+" Internal error code "+
shell_ErrorBox(rA$):
TB%,_A%:_A%=_shell_blk%:!_A%=
:$(_A%+4)=rA$+
&600DF,_A%,17,"XMessage from "+
shell_GetAppName
&600DF,_A%,1,
shell_GetAppName
shell_GetLastSecureFileName:
c%:c%=_U%!80:
shell_GetString(HF%):
aA$,yC%:
((HF%?yC%)>31
yC%<&FF):aA$+=
(HF%?yC%):yC%+=1:
:=aA$
shell_GetEventHandler(b%,_%,UC%):
e%,i%,m%,q%,A$:
b%=-1
b%=-2
shell_HeapBlockInfo(_U%!&C)-8:e%=0:m%=
:i%=_U%!&C:A$="":
(i%!e%=b%)
i%!(e%+4)
i%!(e%+(&C+(UC%*4)))>&8000
#A$=$(i%!(e%+(&C+(UC%*4)))):m%=
e%+=48
i%!(e%+4)=_%
i%!(e%+(&C+(UC%*4)))>&8000
#A$=$(i%!(e%+(&C+(UC%*4)))):m%=
e%+=48
e%+=48
e%+=48
((e%>=q%)
m%):=A$
shell_GetEventMenu(lB%,b%,_%):
e%,i%,m%,q%,n%:
b%=-1
b%=-2
shell_HeapBlockInfo(_U%!&C)-8:e%=0:m%=
:i%=_U%!&C:A$="":
(i%!e%=b%)
shell_Tracef0("GetEventMenu:window handle matched.."):
i%!(e%+4)=_%
"n%=i%!(e%+8):
n%=-2
n%=_U%!&FC
:e%+=48:
(e%>=q%
m%):=n%
shell_GetEventListOffset(b%,f%,i%,GB%,bC%):
q%,e%,m%,d%,JB%,c%:
(!i%=0
(!i%=0)
@:!i%=
shell_HeapBlockFetch(GB%):c%=!i%:c%!0=0:c%!4=0:=0
shell_HeapBlockInfo(!i%)-8:e%=0:m%=
:d%=-1:JB%=-1:c%=!i%:
JB%<0
(c%!e%=0
c%!e%+4=0)
JB%=e%
(c%!e%=b%)
f%=-1
d%=e%:m%=
shell_Tracef0("GetEventListOffset:icon handle is not -1"):
c%!(e%+4)=f%
d%=e%:m%=
e%+=GB%
e%+=GB%
((e%>=q%)
(d%=-1
JB%<0
qId%=q%:!i%=
shell_HeapBlockExtend(!i%,GB%):c%=!i%:c%+=d%:c%!0=0:c%!4=0
d%=JB%
shell_AttachPane(b%,
cD%,l%,mA%,pA%):
a%,d%,c%,RB%,gD%:
shell_Tracef0("AttachPane:Attaching Pane Handler"):gD%=
shell_WindowGetFlags(cD%):
1<<5)=0
shell_Tracef0("AttachPane:'Pane' bit of pane window is not set, fixing.."):
shell_WindowToggleFlags(cD%,1<<5)
1<<1)
shell_Tracef0("AttachPane:'Moveable' bit of pane window is set, fixing.."):
shell_WindowToggleFlags(cD%,1<<1)
shell_GetEventListOffset(b%,-1,_U%+92,24,
shell_Tracef0("AttachPane:Creating pane event block"):d%=
shell_GetEventListOffset(b%,-1,_U%+92,24,
):a%=_U%!92+d%:a%!0=b%:a%!4=-1:a%!8=
shell_HeapBlockFetch(4):a%!&C=
shell_HeapBlockFetch(4):a%!16=
shell_HeapBlockFetch(4)
aa%!20=
shell_HeapBlockFetch(4):c%=a%!8:!c%=-1:c%=a%!&C:!c%=-1:c%=a%!16:!c%=-1:c%=a%!20:!c%=-1
:a%=_U%!92+d%:c%=a%!8:g%=0:RB%=0:
c%!g%<>-1:g%+=4:RB%+=1:
:a%!8=
shell_HeapBlockExtend(a%!8,4):c%=a%!8:c%!(RB%*4)=cD%:c%!((RB%+1)*4)=-1:a%!&C=
shell_HeapBlockExtend(a%!&C,4):c%=a%!&C:c%!(RB%*4)=l%:c%!((RB%+1)*4)=-1
a%!16=
shell_HeapBlockExtend(a%!16,4):c%=a%!16:c%!(RB%*4)=mA%:c%!((RB%+1)*4)=-1:a%!20=
shell_HeapBlockExtend(a%!20,4):c%=a%!20:c%!(RB%*4)=pA%:c%!((RB%+1)*4)=-1:
shell_AttachDataLoad(b%,f%,x%,A$,lG%):
a%,c%,d%,P$:
shell_Tracef0("AttachDataLoad:Attaching DataLoad Handler"):
b%=-1
b%=-2
x%=x%
1<<31
shell_GetEventListOffset(b%,f%,_U%+96,16,
):a%=_U%!96+d%:
a%!0=0
a%!4=0
shell_Tracef0("AttachDataLoad:This is the first DataLoad Event..."):a%!0=b%:a%!4=f%:a%!8=
shell_HeapBlockFetch(8):c%=a%!8:c%!0=x%:c%!4=-1:a%!&C=
shell_HeapBlockFetch(8):c%=a%!&C:c%!0=
shell_HeapBlockFetch(
(A$)+1):c%!4=-1:c%=c%!0:$c%=A$
shell_Tracef0("AttachDataLoad:This is another DataLoad Event..."):a%!8=
shell_HeapBlockExtend(a%!8,4):a%!&C=
shell_HeapBlockExtend(a%!&C,4):g%=0:c%=a%!8:
c%!g%<>-1:g%+=4:
:c%!g%=x%:c%!(g%+4)=-1:c%=a%!&C:c%!g%=
shell_HeapBlockFetch(
A$+1)
c%=c%!g%:$c%=A$
shell_GetCmdLineArgs:
shell_Tracef0("AttachDataLoad:cmdline ="+P$):
shell_Tracef0("AttachDataLoad:flag bit ="+
((_U%!&64
1<<5))):
shell_Tracef0("AttachDataLoad:wh% ="+
~b%):
shell_Tracef0("AttachDataLoad:type% ="+
P$<>""
(_U%!&64
1<<5)
1<<31
c%=x%
1<<31
c%=x%
shell_FileType(P$)=c%
shell_Tracef0("AttachDataLoad:Loading file.."):
shell_MessageSendDataLoad(c%,P$):_U%!&64=_U%!&64
(1<<5)
shell_AttachDataSave(b%,f%,UB%,x%,CC%,A$):
a%,c%,d%:
shell_IconIsSprite(b%,f%)
shell_OK(
shell_MessageNoArgs("SHELLMSG29"))
shell_IconSetButtonType(b%,f%,6):
UB%=0
UB%=&64
shell_Tracef0("AttachDataSave:Attaching DataSave Handler to icon "+
f%+" in window &"+
~b%):
shell_Tracef0("AttachDataSave:Handler function is '"+A$+"'"):d%=
shell_GetEventListOffset(b%,f%,_U%+72,24,
):a%=_U%!72+d%:a%!0=b%:a%!4=f%:a%!8=UB%:a%!&C=x%
Ha%!16=CC%:a%!20=
shell_HeapBlockFetch(
(A$)+1):c%=a%!20:$c%=A$:
&FF9:
UB%>&8000
'_U%!&88=
shell_HeapBlockInfo(UB%)-8
_U%!&88=UB%
UB%>&8000
'_U%!&88=
shell_HeapBlockInfo(UB%)-4
_U%!&88=UB%
:_U%!&8C=x%:_U%!&90=UB%:
shell_AttachMenu(b%,_%,n%,QC%,LC%,oC%):
_%>=0
shell_IconSetButtonType(b%,_%,3)
shell_IsWindowStatic(b%)=
shell_OK(
shell_MessageNoArgs("SHELLMSG30"))
shell_Tracef0("AttachMenu:Attaching menu handle &"+
~n%+" to window handle &"+
~b%):
shell_EventAdd(b%,_%,0,n%,""):
shell_AttachMenuMaker(b%,_%,A$):
shell_Tracef0("AttachMenuMaker:Attaching menumaker function '"+A$+"'"):
shell_EventAdd(b%,_%,1,0,A$):
shell_AttachMenuDBox(VB%,d$,bA$,YA$):
a%,c%,DB%:
shell_WindowLoaded(d$)
shell_MessageOneArg("SHELLMSG03",d$)
shell_HeapBlockFetch(&C):a%!0=
shell_HeapBlockFetch(
d$+1):c%=a%!0:$c%=d$:a%!4=
shell_HeapBlockFetch(
bA$+1):c%=a%!4:$c%=bA$:a%!8=
shell_HeapBlockFetch(
YA$+1):c%=a%!8:$c%=YA$:
&45BCE,VB%,a%:
&45BCC,,
shell_AttachClickSelect(b%,_%,A$):
shell_EventAdd(b%,_%,2,0,A$):
shell_AttachClickAdjust(b%,_%,A$):
shell_EventAdd(b%,_%,3,0,A$):
shell_AttachUserRedraw(
b%,A$):
a%,YA%:a%=
shell_HeapBlockFetch(40):!a%=b%:
&400CB,,a%:YA%=a%!32:
shell_HeapBlockReturn(a%):
1<<4)
shell_Tracef0("AttachUserRedraw:auto redraw set!!"):
shell_WindowToggleFlags(b%,1<<4)
shell_EventAdd(b%,-1,4,0,A$):
shell_AttachDrag(b%,_%,JH%,A$):
shell_EventAdd(b%,_%,6,0,A$):
shell_AttachHelpTag(b%,_%,G$):
shell_EventAdd(b%,_%,8,0,G$):
shell_EventAdd(b%,_%,UC%,n%,A$):
e%,DC%,i%,q%,m%:
zC%:e%=0:m%=
b%=-1
b%=-2
x>q%=
shell_HeapBlockInfo(_U%!&C)-8:i%=_U%!&C:
(i%!e%=b%)
i%!(e%+4)=_%
e%+=48
e%+=48
(e%>=q%
%e%=0:
(i%!e%<>0):e%+=48:
e%>=q%
_U%!&C=
shell_HeapBlockExtend(_U%!&C,48):i%=_U%!&C:i%!(e%+0)=0:i%!(e%+4)=0:i%!(e%+8)=0:i%!(e%+&C)=0:i%!(e%+16)=0:i%!(e%+20)=0:i%!(e%+24)=0:i%!(e%+28)=0:i%!(e%+32)=0:i%!(e%+36)=0:i%!(e%+40)=0:i%!(e%+44)=0
:i%!(e%+0)=b%:i%!(e%+4)=_%:
n%<>0
i%!(e%+8)=n%
:zC%=e%+(&C+(UC%*4)):
i%!zC%<>0
shell_HeapBlockReturn(i%!zC%)
:DC%=
shell_HeapBlockFetch(
A$+1):$DC%=A$:i%!zC%=DC%:
shell_EventDeleteAll(b%):
e%,n%,m%,q%,i%,y%:e%=0:n%=0:m%=
b%=-1
b%=-2
shell_HeapBlockInfo(_U%!&C)-8:i%=_U%!&C:
(i%!e%=b%)
e%+=48
(e%>=q%
Ci%!(e%+0)=0:i%!(e%+4)=0:i%!(e%+8)=0:
y%=&C
i%!(e%+y%)<>0
shell_HeapBlockReturn(i%!(e%+y%)):i%!(e%+y%)=0
shell_Tracef0("EventDeleteAll:wh%=&"+
~b%):
shell_DeleteEventDataSave(b%,-1):
shell_DeleteEventBump(b%,-1):
shell_DeleteEventSlider(b%,-1):
shell_DeleteEventBump(b%,f%):
d%,a%,q%,i%,c%:i%=_U%!&68:
shell_GetEventListOffset(b%,f%,_U%+&68,16,
shell_Tracef0("DeleteEventBump:offset%="+
d%>=0
f%=-1
shell_Tracef0("DeleteEventBump:Deleting Bump Event (all events for window handle &"+
~b%+")")
shell_Tracef0("DeleteEventBump:Deleting Bump Event (window handle was &"+
~b%+" icon handle was "+
f%+")")
shell_HeapBlockInfo(_U%!&68)-8:
d%=q%-16
SA%=i%!&C:c%=SA%!&C:
shell_HeapBlockReturn(c%!&C):
shell_HeapBlockReturn(c%!16):
shell_HeapBlockReturn(c%):
shell_HeapBlockReturn(_U%!&68):_U%!&68=0:
shell_Tracef0("DeleteEventBump:No Bump events now registered")
_U%!&68=
shell_HeapBlockExtend(_U%!&68,-16)
a%=i%+d%:a%!0=0:a%!4=0:a%!8=0:SA%=a%!&C:
shell_HeapBlockReturn(SA%!&C):
shell_HeapBlockReturn(SA%!16):
shell_HeapBlockReturn(SA%)
d%<0:
shell_DeleteEventDataSave(b%,f%):
d%,a%,q%:
shell_GetEventListOffset(b%,f%,_U%+72,24,
d%>=0
f%=-1
shell_Tracef0("DeleteEventDataSave:Deleting DataSave Event (all events for window handle &"+
~b%+")")
shell_Tracef0("DeleteEventDataSave:Deleting DataSave Event (window handle was &"+
~b%+" icon handle was "+
f%+")")
shell_HeapBlockInfo(_U%!72)-8:
d%=q%-24
shell_HeapBlockReturn(_U%!72):_U%!72=0:
shell_Tracef0("DeleteEventDataSave:No DataSave events now registered")
_U%!72=
shell_HeapBlockExtend(_U%!72,-24)
a%=i%+d%:a%!0=0:a%!4=0:a%!8=0:a%!&C=0:a%!16=0:
shell_HeapBlockReturn(a%!20):a%!20=0
d%<0:
shell_MessageNoArgs(G$):=
shell_MessageLookup(G$,"","")
shell_MessageOneArg(G$,n$):=
shell_MessageLookup(G$,n$,"")
shell_MessageTwoArgs(G$,n$,CA$):=
shell_MessageLookup(G$,n$,CA$)
shell_MessageLookup(G$,n$,CA$):
l%,L%,j$,rC%,xB%:
G$,8)="SHELLMSG"
rC%=_U%!284:xB%=_U%!280
rC%=_U%!64:xB%=_U%!68
&61502,xB%,G$,rC%,256,n$,CA$
,,,L%;l%:
rC%?L%=&D:j$=$(rC%)
shell_WimpInit(aC%,SA$):
&400C0,aC%,&4B534154,SA$
aC%,hA%:
_U%!&64
"WimpExt_Initialise",&E,hA%
:_U%!&94=hA%:=hA%
shell_WimpInit_I(aC%,SA$):
&400C0,aC%,&4B534154,SA$
aC%,hA%:
_U%!&64
"WimpExt_Initialise",&E,hA%
:_U%!&94=hA%:
&81682,hA%:=hA%
shell_WimpCloseDown_I(hA%):
shell_LoseFonts:
_U%!&F0<>-1
"XFontMenu_Release"
_U%!&64
"WimpExt_Initialise",&E,hA%
&600DD,hA%,&4B534154:
&A1683,hA%:
_U%!&64
"XImpulse_CloseDown",_U%!&94
WimpCloseDown(hA%):
shell_LoseFonts:
_U%!&F0<>-1
"XFontMenu_Release"
_U%!&64
"WimpExt_Initialise",&E,hA%
&600DD,hA%,&4B534154:
_U%!&64
"XImpulse_CloseDown",_U%!&94
("Unset "+_shell_AppName$+"$BasicFile"):
shell_LoseFonts:
y%,c%:c%=_U%!&E8:
c%?y%>0:
&40082,y%:c%?y%-=1:
shell_FindFont(e$,OG%):
YA%,yD%:yD%=_U%!&E8:
&40081,,e$,OG%*16,_*16,0,0
YA%:yD%?YA%+=1:
yD%?YA%>=&FF
shell_OK(
shell_MessageNoArgs("SHELLMSG18"))
shell_Init:
nA%,y%,c%,P$:
wA%,C$,D$,TD%:
shell_DefineConstants:
_U%360,_shell_blk%260:_Q%=
shell_HeapBlockFetch(&BB8):nA%=
shell_HeapBlockFetch(48):nA%!0=0:nA%!4=0:nA%!8=0:nA%!&C=0:nA%!16=0:nA%!20=0:nA%!24=0:nA%!28=0:nA%!32=0:nA%!36=0:nA%!40=0
nA%!44=0:_U%!0=0:_U%!4=0:_U%!8=0:_U%!&C=nA%:_U%!16=1:_U%!20=0:_U%!24=0:_U%!28=0:_U%!32=-1:_U%!36=0:_U%!40=0:_U%!44=-1:_U%!48=0:_U%!52=0:_U%!56=0:_U%!60=0:_U%!64=0:_U%!68=0:_U%!72=0:_U%!76=
shell_HeapBlockFetch(256):_U%!80=0:_U%!84=-1:_U%!88=0:_U%!92=0
_U%!96=0:_U%!&64=0:_U%!&68=0:_U%!&6C=-1:_U%!&70=-1:_U%!&74=-1:_U%!&78=-1:_U%!&7C=-1:_U%!&80=0:_U%!&84=0:_U%!&88=-1:_U%!&8C=-1:_U%!&90=-1:_U%!&94=0:_U%!&98=0:_U%!&9C=0:_U%!&A0=0:_U%!&A4=0:_U%!&A8=0:_U%!&AC=0:_U%!&B0=0:_U%!&B4=0:_U%!&B8=0:_U%!&BC=0
_U%!&C0=0:_U%!&C4=0:_U%!&C8=0:_U%!&CC=0:_U%!&D0=-1:_U%!&D4=-1:_U%!&D8=0:_U%!&DC=0:_U%!&E0=0:_U%!&E4=0:_U%!&E8=
shell_HeapBlockFetch(256):_U%!&EC=
shell_HeapBlockFetch(256):_U%!&F0=-1:_U%!&F4=0:_U%!&F8=0:_U%!&FC=0:_U%!256=0:_U%!260=1:_U%!264=0
_U%!268=0:_U%!272=0:_U%!276=0:_U%!280=0:_U%!284=0:_U%!288=-1:_U%!292=-1:_U%!296=-1:_U%!300=0:_U%!304=0:_U%!308=0:_U%!312=0:_U%!316=0:_U%!320=0:_U%!324=0:_U%!328=0:_U%!332=0:_U%!336=0:_U%!340=0:_U%!344=0:
shell_MemFill(_U%!&E8,256,0)
shell_MemFill(_U%!&EC,256,0):wA%=
shell_HeapBlockFetch(256):C$=
shell_OSVarGetVal(wA%,256,"Obey$Dir",1):
shell_HeapBlockReturn(wA%):D$=
shell_Leaf(C$),2):_U%!&BC=
shell_HeapBlockFetch((
C$)+1):_U%!&C4=
shell_HeapBlockFetch((
D$)+1):c%=_U%!&BC:$c%=C$
B<c%=_U%!&C4:$c%=D$:P$=
shell_OSReadCommandArg(1):
P$<>""
FL_U%!&64=_U%!&64
1<<5:c%=
shell_HeapBlockFetch(
P$+1):$(c%)=P$:_U%!324=c%
shell_OSModuleCheckVersion("WimpExtension",1.98):
_U%!&64=_U%!&64
P/c%=
RO3_Present:
_U%!&64=_U%!&64
1<<&A
_U%!&64=_U%!&64
1<<&C:TD%=&64:
shell_PollSetInterval(TD%):
shell_PollSetPrevInterval(TD%):
ZD%:ZD%+=TD%:
shell_InitModules:
shell_InitModules:
k%:k%=
_shell_StaticList_Init:
shell_GetCmdLineArgs:
_U%!324<>0
P$=$(_U%!324)
shell_Tracef0("GetCmdLineArgs:cmdline was "+P$):=P$
shell_FileType(W$):
8,5,W$
,,x%:x%=(x%
&FFF00)>>>8:=x%
shell_FileExists(W$):
x%,B:B=5:
8,B,W$
shell_CatInfoRead(W$):
x%,YD%,CD%,KB%,TC%,B$:
8,5,W$
x%,,YD%,CD%,KB%,TC%:
="Not Found"
TC%=51
B$+="WR "
TC%=&BB
B$+="LWR"
TC%=&88
B$+="DL "
B$+=" "+
shell_StringPadLeading(
~YD%,"0",8):B$+=" "+
shell_StringPadLeading(
~CD%,"0",8):B$+=" "+
shell_StringPadLeading(
~KB%,"0",8):=B$
shell_FileGetDateStamp(W$):
x%,eF%,B:B=5:
8,B,W$
x%,,,eF%:
shell_GetAppDir:
c%:c%=_U%!&BC:=$c%
shell_GetAppDataDir:
c%:c%=_U%!&C0:=$c%
shell_GetAppName:
c%:c%=_U%!&C4:=$c%
shell_ResourcesInit:
FA$,c%,D$,C$,dD%:
wA%,JC%,cC%:D$=
shell_GetAppName:C$=
shell_GetAppDir:wA%=
shell_HeapBlockFetch(256):
shell_OSVarExists(wA%,D$+"Res$Path")
_U%!&64=_U%!&64
shell_OSVarExists(wA%,D$+"Data$Dir")
nFA$=
shell_OSVarGetVal(wA%,256,D$+"Data$Dir",1):_U%!&C0=
shell_HeapBlockFetch((
FA$)+1):c%=_U%!&C0:$c%=FA$
_U%!&C0=
shell_HeapBlockFetch((
C$)+1):c%=_U%!&C0:$c%=C$
_U%!&64
shell_FileExists(D$+"Res:Messages")
shell_MessagesInit(D$+"Res:Messages",_U%!68,_U%!64)
shell_FileExists(D$+"Res:ShellMsgs")
shell_MessagesInit(D$+"Res:ShellMsgs",_U%!280,_U%!284)
shell_MessagesInit("EvntShellRes:ShellMsgs",_U%!280,_U%!284)
&20035,-1,4
,,cC%:
&20035,-1,5
,,JC%:
JC%=1
shell_FileExists(D$+"Res:Sprites22")
4_U%!16=
shell_SpriteAreaLoad(D$+"Res:Sprites22")
shell_FileExists(D$+"Res:Sprites")
2_U%!16=
shell_SpriteAreaLoad(D$+"Res:Sprites")
_U%!16=1
:dD%=
shell_3DEnabled:
shell_FileExists(D$+"Res:Templates3")
shell_TemplatesInit(D$+"Res:Templates3",k%)
shell_FileExists(D$+"Res:Templates")
shell_TemplatesInit(D$+"Res:Templates",k%)
shell_FileExists(C$+".Messages")
shell_MessagesInit(C$+".Messages",_U%!68,_U%!64)
shell_FileExists(C$+".ShellMsgs")
shell_MessagesInit(C$+".ShellMsgs",_U%!280,_U%!284)
shell_MessagesInit("EvntShellRes:ShellMsgs",_U%!280,_U%!284)
&20035,-1,4
,,cC%:
&20035,-1,5
,,JC%:
JC%=1
shell_FileExists(C$+".Sprites22")
1_U%!16=
shell_SpriteAreaLoad(C$+".Sprites22")
shell_FileExists(C$+".Sprites")
/_U%!16=
shell_SpriteAreaLoad(C$+".Sprites")
_U%!16=1
:dD%=
shell_3DEnabled:
shell_FileExists(C$+".Templates3")
shell_TemplatesInit(C$+".Templates3",k%)
shell_FileExists(C$+".Templates")
shell_TemplatesInit(C$+".Templates",k%)
&45BC0:
shell_HeapBlockReturn(_Q%):_Q%=
shell_HeapBlockFetch(&400):
shell_HeapBlockReturn(wA%):
shell_SpriteAreaLoad(H$):
gB%,S%,T%:S%=
(H$):T%=
#S%+16:
#S%:gB%=
shell_HeapBlockFetch(T%):!gB%=T%:gB%!4=0:gB%!8=16:gB%!&C=16:
46,521,gB%:
46,522,gB%,H$:
shell_Tracef0("SpriteLoad:Sprite file loaded at &"+
~gB%):=gB%
shell_UserSpritesBase:=_U%!16
shell_SpriteGetPtr(XC%,R$):
WB%,e%:WB%=
shell_HeapBlockFetch(21):$WB%=R$:
46,280,XC%,WB%
,,e%:
shell_HeapBlockReturn(WB%):=e%
shell_MessageExpand(g$):
L$,j$,sA%:L$="":
g$,"\")>0:sA%=
g$,"\"):L$+=
g$,sA%-1):j$=
g$,sA%+1,1):g$=
g$,sA%+2):
"A":L$+="Click ADJUST to"
"a":L$+="ADJUST"
"D":L$+="Drag with SELECT to"
"d":L$+="Drag with ADJUST to"
"G":L$+="This option is greyed out because"
"R":L$+="Move the pointer right"
"S":L$+="Click SELECT to"
"s":L$+="SELECT"
"T":L$+="This is the"
"W":L$+="This window is"
"w":L$+="window"
L$+="\"+j$
:=L$+g$
shell_OpenMenu(LA%,RA%,CB%):
A$:A$=
shell_GetEventHandler(_U%!28,_U%!32,1):
A$<>""
shell_Tracef0("OpenMenu:About to call "+"FN"+A$+"("+
_U%!28+","+
_U%!32+")"):k%=
("FN"+A$+"(_U%!28,_U%!32)")
shell_Tracef0("OpenMenu:no menumaker function registered")
CB%<>_U%!24
shell_HeapBlockExists(_U%!256)
shell_HeapBlockReturn(_U%!256):_U%!256=0
shell_HeapBlockExists(_U%!&F4)
shell_HeapBlockReturn(_U%!&F4):_U%!&F4=0
CB%=_U%!&FC
&400D4,,CB%,LA%-64,RA%:_U%!264=1
_Q%!0=LA%:_Q%!4=RA%:
&45BC5,CB%,_Q%:_U%!264=0
:_U%!24=CB%:_U%!36=LA%:_U%!40=RA%:_U%!52=_U%!28:_U%!56=_U%!32:
shell_MenuLastXPos:=_U%!36
shell_MenuLastYPos:=_U%!40
shell_MenuAttachDbox(h$):
"Menu_SetSubHandle",_U%!8,
shell_MenuString(h$),1:
shell_Tracef0("MenuAttachDbox:Dialog box ("+h$+") attached"):
shell_MessageWindow(I$,XG%,mA$,w$):
NE%,_A%:_A%=
shell_HeapBlockFetch(260):!_A%=0:$(_A%+4)=I$+
w$=""
w$="Message from "+mA$
&400DF,_A%,19,w$
&400DF,_A%,17,w$
shell_HeapBlockReturn(_A%):=NE%
shell_CreateWindow(nA$,
HC%:HC%=
shell_GetWB(nA$):HC%!64=_U%!16:
&400C1,,HC%
shell_CreateWindow2(N,l%,LG%,jG%,IG%,rA%,fE%,kA%,TB%,ZB%):
Q%:Q%=
shell_HeapBlockFetch(&BB8):Q%!0=fE%:Q%!4=kA%:Q%!8=TB%:Q%!&C=ZB%:Q%!16=0:Q%!20=0:Q%!24=-1:Q%!28=l%:Q%?32=7:Q%?33=2:Q%?34=LG%:Q%?35=jG%:Q%?36=3:Q%?37=1:Q%?38=2:Q%?39=0:Q%!40=0:Q%!44=rA%
Q%!48=IG%:Q%!52=0:Q%!56=317:Q%!60=&3000:Q%!68=1:Q%!72=N:Q%!76=-1:Q%!80=
$N:Q%!84=0:
&400C1,,Q%
shell_HeapBlockReturn(Q%):=h%
shell_WindowHasTitleBar(b%):=(
shell_WindowGetFlags(b%)
1<<26)
shell_WindowIsMoveable(b%):=(
shell_WindowGetFlags(b%)
1<<1)
shell_WindowIsAPane(b%):=(
shell_WindowGetFlags(b%)
1<<5)
shell_WindowIsNotBounded(b%):=(
shell_WindowGetFlags(b%)
1<<6)
shell_WindowTrapsHotKeys(b%):=(
shell_WindowGetFlags(b%)
1<<&C)
shell_WindowIsOpen(b%):=(
shell_WindowGetFlags(b%)
1<<16)
shell_WindowIsOnTop(b%):=(
shell_WindowGetFlags(b%)
1<<17)
shell_WindowHasBeenToggled(b%):=(
shell_WindowGetFlags(b%)
1<<18)
shell_WindowHasInputFocus(b%):=(
shell_WindowGetFlags(b%)
1<<20)
shell_WindowHasBackIcon(b%):=(
shell_WindowGetFlags(b%)
1<<24)
shell_WindowHasCloseIcon(b%):=(
shell_WindowGetFlags(b%)
1<<25)
shell_WindowHasToggleIcon(b%):=(
shell_WindowGetFlags(b%)
1<<27)
shell_WindowHasVScrollBar(b%):=(
shell_WindowGetFlags(b%)
1<<28)
shell_WindowHasAdjustSizeIcon(b%):=(
shell_WindowGetFlags(b%)
1<<29)
shell_WindowHasHScrollBar(b%):=(
shell_WindowGetFlags(b%)
1<<30)
shell_WindowGetFlags(b%):
l%,a%:a%=
shell_HeapBlockFetch(36):a%!0=b%:
&400CB,,a%:l%=a%!32:
shell_HeapBlockReturn(a%):=l%
shell_WindowGetTitleFlags(b%):
l%,a%:a%=
shell_HeapBlockFetch(&64+(
shell_WindowCountIcons(b%)*32)):a%!0=b%:
&400CC,,a%:l%=a%!60:
shell_HeapBlockReturn(a%):=l%
shell_IconGetFlags(b%,f%):
l%,a%:a%=
shell_HeapBlockFetch(50):a%!0=b%:a%!4=f%:
&400CE,,a%:l%=a%!24:
shell_HeapBlockReturn(a%):=l%
shell_WindowTitleFlags(b%):
l%,a%:a%=
shell_HeapBlockFetch(&64+(
shell_WindowCountIcons(b%)*32)):a%!0=b%:
&400CC,,a%:l%=a%!60:
shell_HeapBlockReturn(a%):=l%
shell_WindowTitleHasBorder(b%):=(
shell_WindowTitleFlags(b%)
1<<2)
shell_WindowTitleIsSprite(b%):=(
shell_WindowTitleFlags(b%)
1<<1)
shell_WindowTitleIsText(b%):=(
shell_WindowTitleFlags(b%)
1<<0)
shell_WindowTitleIsHCentred(b%):=(
shell_WindowTitleFlags(b%)
1<<3)
shell_WindowTitleIsVCentred(b%):=(
shell_WindowTitleFlags(b%)
1<<4)
shell_WindowTitleIsFilled(b%):=(
shell_WindowTitleFlags(b%)
1<<5)
shell_WindowTitleIsAAliased(b%):=(
shell_WindowTitleFlags(b%)
1<<6)
shell_WindowTitleIsIndirected(b%):=(
shell_WindowTitleFlags(b%)
1<<8)
shell_WindowGetTitle(b%):
T$,a%:a%=
shell_HeapBlockFetch(&64+(
shell_WindowCountIcons(b%)*32)):a%!0=b%:
&400CC,,a%:
(a%!32
1<<26)
((a%!60)
256)=0
T$=$(a%+76)
T$=$(!(a%+76))
shell_HeapBlockReturn(a%):=T$
shell_WindowTitleBufferLength(b%):
w%,a%:a%=
shell_HeapBlockFetch(&64+(
shell_WindowCountIcons(b%)*32)):a%!0=b%:
&400CC,,a%:
((a%!60)
256)=0
w%=&C
w%=a%!84
shell_HeapBlockReturn(a%):=w%
shell_WindowMoveToIcon(b%,nD%,f%,mA%,pA%):
s%,p%:s%=
shell_HeapBlockFetch(50):p%=
shell_HeapBlockFetch(36):p%!20=0:
shell_OSCheckVersion(3)
nD%=-1
!p%=-2
!p%=nD%
&400CB,,p%
:s%!0=nD%:s%!4=f%:
&400CE,,s%:
shell_WindowMoveTo(b%,s%!8+mA%-p%!20,s%!20+pA%):
shell_HeapBlockReturn(s%):
shell_HeapBlockReturn(p%):
shell_WindowMoveTo(b%,LA%,RA%):
PF%,dF%,d%,a%:a%=
shell_HeapBlockFetch(&64+(
shell_WindowCountIcons(b%)*32)):a%!0=b%:
&400CC,,a%:PF%=a%!&C-a%!4:dF%=a%!16-a%!8:a%!4=LA%:a%!8=RA%:a%!&C=LA%+PF%:a%!16=RA%+dF%:
&400C5,,a%:
&400C6,,a%
shell_IsWindowStatic(b%)
shell_OpenWindowStatic(b%)
shell_OpenWindowDynamic2(b%,0,0)
shell_HeapBlockReturn(a%):
shell_WindowBringToTop(b%):
zB%:zB%=
shell_HeapBlockFetch(256):zB%!0=b%:
&400CB,,zB%:zB%!28=-1:
&400E7,2,zB%,b%:
&400C7,0,zB%:
shell_HeapBlockReturn(zB%):
shell_UpdateWindow(h%,fE%,kA%,TB%,ZB%):
a%:a%=
shell_HeapBlockFetch(a%):a%!0=h%:a%!4=fE%:a%!8=kA%:a%!&C=TB%:a%!16=ZB%:
&400C9,,a%
&400CB,,a%:
shell_HeapBlockReturn(a%):
shell_OpenWindowDynamic2(b%,mA%,pA%):
k%,FB%:FB%=
shell_HeapBlockFetch(20):_U%!20=b%:
&400CF,,FB%:
&400D4,,b%,FB%!0+mA%,FB%!4+pA%:
shell_HeapBlockReturn(FB%):
shell_ClaimKeypress:
_U%!20<>0
&400D4,,-1:k%=
shell_DeleteWindow(_U%!20):_U%!20=0
shell_OpenWindow(b%,kE%,YC%):
d%,a%,v%,g%,IF%,HB%,bA%,AB%:
qB%,MC%,ZB%,lF%,tE%,hC%,xC%:d%=
shell_GetEventListOffset(b%,-1,_U%+304,&C,
d%>=0
(ga%=_U%!304+d%:c%=a%!8:
shell_Tracef0("OpenWindow:About to call "+"FN"+$c%):hC%=
("FN"+$c%):
hC%=0
:MC%=
:ZB%=
shell_HeapBlockFetch(40):ZB%!0=b%:
&400CB,,ZB%:
(ZB%!32
&80000)=&80000
shell_HeapBlockReturn(ZB%):xC%=
shell_HeapBlockFetch(20):
&400CF,,xC%:_Q%!0=b%:
&400CB,,_Q%
&400C5,,_Q%
shell_GetEventListOffset(b%,-1,_U%+92,24,
d%>-1
BJa%=(_U%!92)+d%:SC%=a%!8:XE%=a%!&C:wB%=a%!16:PC%=a%!20:_Q%!0=b%:
YC%>0
HB%=YC%
HB%=-1
HB%=_Q%!28
&400C5,,_Q%:
&400CB,,_Q%:
&400C6,,_Q%
shell_HeapBlockFetch(40):g%=0:
SC%!g%<>-1:v%!0=SC%!g%:
IF%=0
IF%=v%!0
\7lF%=v%!0:
&400CB,,v%:
xC%!16=-9
xC%!16>-5
qB%=XE%!g%:
0,1:bA%=v%!16-v%!8:AB%=v%!&C-v%!4:v%!4=_Q%!4+wB%!g%:v%!&C=v%!4+AB%:v%!16=_Q%!16+PC%!g%:v%!8=v%!16-bA%
2:bA%=v%!16-v%!8:AB%=_Q%!&C-_Q%!4:v%!4=_Q%!4+wB%!g%:v%!&C=_Q%!&C:v%!16=_Q%!16+PC%!g%:v%!8=v%!16-bA%
3:bA%=_Q%!16-_Q%!8:AB%=v%!&C-v%!4:v%!4=_Q%!4+wB%!g%:v%!&C=v%!4+AB%:v%!16=_Q%!16:v%!8=_Q%!8+PC%!g%
4:bA%=v%!16-v%!8:AB%=_Q%!&C-_Q%!4:v%!4=_Q%!4+wB%!g%:v%!&C=_Q%!&C:v%!16=_Q%!8+bA%+PC%!g%:v%!8=v%!16+bA%
5:bA%=_Q%!16-_Q%!8:AB%=v%!&C-v%!4:v%!4=_Q%!&C-AB%+wB%!g%:v%!&C=v%!4+AB%:v%!16=_Q%!16:v%!8=_Q%!8
v%!28=HB%
v%!28=tE%
&400C5,,v%
:tE%=v%!0:g%+=4:
_Q%!28=lF%:
&400C5,,_Q%
shell_HeapBlockReturn(v%)
_Q%!0=b%:
&400CB,,_Q%
HB%=-2
_Q%!28=-2
YC%=-1
_Q%!28=-1
&400C5,,_Q%
shell_HeapBlockReturn(xC%):
shell_CloseWindow(b%):
d%,a%,SC%,XE%,wB%,PC%,r%,hC%:d%=
shell_GetEventListOffset(b%,-1,_U%+308,&C,
d%>=0
ha%=_U%!308+d%:c%=a%!8:
shell_Tracef0("CloseWindow:About to call "+"FN"+$c%):hC%=
("FN"+$c%):
hC%=0
shell_HeapBlockFetch(60):
shell_GetEventListOffset(b%,-1,_U%+92,24,
d%>-1
la%=(_U%!92)+d%:XE%=a%!&C:wB%=a%!16:PC%=a%!20:g%=0:SC%=a%!8:
SC%!g%<>-1:r%!0=SC%!g%:
&400C6,,r%:g%+=4:
:r%!0=b%:
&400C6,,r%
shell_HeapBlockReturn(r%):
shell_GetDynamicWindowHandle:=_U%!20
shell_DeleteWindow(h%):
r%:r%=
shell_HeapBlockFetch(20):
h%<>0
oktodeletew(h%)
shell_EventDeleteAll(h%):
shell_RemoveHandleFromWindowList(h%):
h%=_U%!20
_U%!20=0
shell_RemoveStaticWindowFromList(h%)
:r%!0=h%:
&400C3,,r%:h%=0
shell_HeapBlockReturn(r%):=h%
oktodeletew(h%):=-1
oktoclosew(h%):=-1
cliprect(A,
JG%):
QA%,TA%:
lwaorigin(A,QA%,TA%):cA%=A!24-QA%:lA%=A!28-TA%:mG%=A!32-QA%:JG%=A!36-TA%:
poll(BC%,OE%):
_U%!&64
"WimpExt_PrePoll"
&400C7,BC%,_Q%
_U%!&64
"WimpExt_Action",_U%!&94,_Q%,PA%
shell_Poll_I(BC%,OE%):
_U%!&64
"WimpExt_PrePoll"
&400C7,BC%,_Q%
_U%!&64
"WimpExt_Action",_U%!&94,_Q%,hB%
&81686,hB%,,OE%:=hB%
shell_PollIdle(BC%,OE%):
_U%!&64
"WimpExt_PrePoll"
&400E1,BC%,_Q%,ZD%
_U%!&64
"WimpExt_Action",_U%!&94,_Q%,hB%
shell_PollSetInterval(zD%):NF%=zD%:
shell_PollSetPrevInterval(zD%):rG%=zD%:
shell_PollReadInterval:=NF%
shell_PollReadPrevInterval:=rG%
shell_DoBackgroundTask:
shell_IconIsDraggable(b%,f%):
l%:l%=
shell_IconGetFlags(b%,f%):c%=(l%
&6000):
c%=&6000=
shell_IconIsSprite(b%,f%):
l%,c%:l%=
shell_IconGetFlags(b%,f%):c%=(l%
1<<1):
c%=(1<<1)
shell_IconDragBox(b%,f%):
a%,H,I,tA%,l%,YA%,fF%,VF%,KC%,IA$:
CC%,R$:tA%=
shell_GetEventListOffset(b%,f%,_U%+72,24,
tA%>=0
qna%=_U%!72+tA%:CC%=a%!16:R$=
shell_IconGetData(b%,CC%):
R$=""
shell_OK(
shell_MessageNoArgs("SHELLMSG28"))
shell_HeapBlockFetch(&64+(
shell_WindowCountIcons(b%)*32)):!a%=b%:
&400CC,,a%:H=a%!4-a%!20:I=a%!16-a%!24:VF%=a%!68:a%!4=f%:
&400CE,,a%:!a%=b%:a%!4=5:l%=a%!24:KC%=a%!32:a%!8=a%!8+H:a%!&C=a%!&C+I:a%!16=a%!16+H:a%!20=a%!20+I:a%!24=0:a%!28=0
Ja%!32=&7FFFFFFF:a%!36=&7FFFFFFF:
6,&A1,28
,,YA%:fF%=((YA%
2)=2):
YA%=l%:
&IA$=
shell_IconGetCommand(KC%,"s")
shell_OK(
shell_MessageNoArgs("SHELLMSG19"))
IA$<>""
&42400,&85,VF%,IA$,a%+8:_U%!&64=_U%!&64
&400D0,,a%
&400D0,,a%
shell_HeapBlockReturn(a%)
shell_Tracef0("IconDragBox:WARNING! no user drag handler registered for this icon!"):
shell_Tracef0("IconDragBox:now checking for a slider drag event.."):tA%=
shell_GetEventListOffset2(b%,f%,_U%+332,32,
shell_Tracef0("IconDragBox:event offset is "+
tA%):
tA%>=0
shell_HandleSlider(b%,f%,tA%)
shell_HandleAttachedMenu(_Q%,b%,f%):
f%<>-1
b%>-1
shell_GetEventMenu(_Q%!8,b%,f%):
n%<>0
shell_HandleMenuOpen(_Q%,n%,b%,f%,
shell_Action(tG%):
A$,n%,h$,tA$,XB%,BB%,PB%,iD%:
b%,f%,k%,_temp28%,_temp32%,_temp24%,_temp%,PE%:
ZC%,d%,kF%:
(kF%-ZD%)>0:ZD%+=NF%:
shell_DoBackgroundTask:
(_U%!&64
1<<&B)
shell_Slider
shell_RedrawWindow(_Q%!0)
shell_OpenWindow(_Q%!0,
shell_CloseWindow(_Q%!0)
shell_PointerLeavingWindow(_Q%)
shell_PointerEnteringWindow(_Q%)
6:_U%!28=_Q%!&C:_U%!32=_Q%!16:BB%=_Q%!0:PB%=_Q%!4:_U%!272=_Q%!0:_U%!276=_Q%!4:_U%!320=_Q%!8:_temp28%=_Q%!&C:_temp32%=_Q%!16:f%=_Q%!16:
shell_Tracef0("Action:Mouse_Click event detected")
shell_Tracef0("Action:Window Handle was &"+
~_Q%!&C+" Icon Handle was "+
_Q%!16):
_Q%!&C=_U%!288
_Q%!16=_U%!292
shell_HandleBumpIcons(_U%!296,_Q%!&C,_Q%!16,_Q%!8)
_U%!288=-1:_U%!292=-1:_U%!296=-1:
_Q%!16>=0
shell_GetEventListOffset2(_Q%!&C,_Q%!16,_U%+&68,16,0):
shell_Tracef0("DEBUG::bump event offset is "+
d%>=0
shell_HandleBumpIcons(d%,_Q%!&C,_Q%!16,_Q%!8)
(_Q%!8=64)
shell_IconIsDraggable(_Q%!&C,_Q%!16):
<a$="Icon is draggable":
shell_IconDragBox(_Q%!&C,_Q%!16)
a$="Icon is not draggable"
shell_Tracef0("Action:"+a$)
_Q%!8
shell_ActionSelectButton
shell_ActionMenuButton
shell_ActionAdjustButton
_U%!&64
&42401:_U%!&64=_U%!&64
:_U%!&80=0:
(_U%!&64
1<<&B)=0
shell_GetEventHandler(_U%!28,_U%!32,6):
A$<>""
shell_Tracef0("Action:Drag event detected - function is "+A$):k%=
("FN"+A$+"(_temp28%,_temp32%)")
shell_Tracef0("Action:Drag event detected - no handler function"):
shell_SendDataSave(_U%!28,_U%!32)
_U%!&64=_U%!&64
1<<&B
shell_Tracef0("Action:keypress is="+
_Q%!24):
_Q%!24
&D,394,398,399,410,430,431:iD%=
shell_WritableIconHandler(_Q%!0,_Q%!4,_Q%!24)
shell_HotKeyProcess(_Q%!24)
shell_Tracef0("Action:Keypress not claimed, passing it on"):
&400DC,_Q%!24
shell_Tracef0("Action:Keypress claimed by this application")
shell_ActionMenuSelect(_Q%)
17,18:
shell_Receive(_Q%)
shell_UserMessageAcknowledge(_Q%)
shell_ActionSelectButton:
d%,NA%,S$,EF%:
shell_Tracef0("ActionSelectButton:Mouse Button was SELECT"):
_U%!32>=0
(=d%=
shell_GetEventListOffset2(_Q%!&C,_Q%!16,_U%+340,24,
d%=-1
d%>=0
EF%=!(_U%!340+d%+16):
_POPUP_TYPE_DATEPICK:NA%=_U%!340+d%:
NA%!&C=-1
S$=""
S$=$(NA%!&C)
shell_DatePickerOpen(NA%!0,NA%!8,NA%!4,S$)
_POPUP_TYPE_FONTPICK:NA%=_U%!340+d%:
NA%!&C=-1
S$=""
S$=$(NA%!&C)
shell_FontPickerOpen(NA%!0,NA%!8,NA%!4,S$)
_POPUP_TYPE_COLOUR24:NA%=_U%!340+d%:
NA%!&C=-1
S$=""
S$=$(NA%!&C)
shell_ColourPickerOpen(NA%!0,NA%!8,NA%!4,S$)
_POPUP_TYPE_TEXT:
shell_HandleMenuOpen(_Q%,!(_U%!340+d%+20),_Q%!&C,_Q%!16,
_POPUP_TYPE_WIMPCOLOUR:
shell_MenuTickOnly1(!(_U%!340+d%+20),
shell_IconGetBGColour(_Q%!&C,!(_U%!340+d%+8)))
99,"Unknown popup type detected"
shell_HandleAttachedMenu(_Q%,_U%!28,_U%!32):
_U%!32=0
shell_HandleAttachedDataSave(_Q%,_U%!28,_U%!32)
T7A$=
shell_GetEventHandler(_U%!28,_U%!32,2):
A$<>""
shell_IconSlab(4,_U%!28,_U%!32):
shell_Tracef0("ActionSelectButton:About to call "+"FN"+A$+"(&"+
~_temp28%+","+
_temp32%+")"):k%=
("FN"+A$+"(_temp28%,_temp32%)")
_U%!32=0
_U%!28=_U%!20
&400D4,,-1
shell_ActionMenuButton:
c%,n%,jC%,d%:jC%=
shell_Tracef0("ActionMenuButton:Mouse Button was MENU"):
_Q%!16>=0
m=d%=
shell_GetEventListOffset2(_Q%!&C,_Q%!16,_U%+340,24,
!(_U%!340+d%+16)=1
shell_MenuTickOnly1(!(_U%!340+d%+20),
shell_IconGetBGColour(_Q%!&C,!(_U%!340+d%+8)))
!(_U%!340+d%+16)=2
z0NA%=_U%!340+d%:
NA%!&C=-1
S$=""
S$=$(NA%!&C)
shell_DatePickerOpen(NA%!0,NA%!8,NA%!4,S$)
shell_HandleMenuOpen(_Q%,!(_U%!340+d%+20),_Q%!&C,_Q%!16,
shiftmenuclick(_Q%!&C,_Q%!16)
shell_Tracef0("ActionMenuButton:Checking menu events.."):
shell_Tracef0("ActionMenuButton:button="+
_Q%!8+" _Q%!12="+
_Q%!&C+" _Q%!16="+
_Q%!16):
_Q%!16>=0
shell_GetEventMenu(_Q%!8,_Q%!&C,_Q%!16)
(n%<>0
_Q%!&C>0
_Q%!16>=0)
shell_GetEventMenu(_Q%!8,_Q%!&C,-1)
shell_Tracef0("ActionMenuButton:Menu handle is:&"+
~n%):
n%<>0
shell_HandleMenuOpen(_Q%,n%,_Q%!&C,_Q%!16,jC%)
shell_HandleMenuOpen(_Q%,n%,b%,f%,jC%):
s%,p%:
shell_OpenMenu(_Q%!0,_Q%!4,n%)
shell_HeapBlockFetch(50):p%=
shell_HeapBlockFetch(36):s%!0=b%:s%!4=f%:
&400CE,,s%:p%!0=b%:
&400CB,,p%:
shell_OpenMenu(p%!4+s%!16+64,_Q%!4,n%):
p%!4+s%!16+64,_Q%!4:
shell_HeapBlockReturn(s%):
shell_HeapBlockReturn(p%)
shell_ActionMenuSelect(_Q%):
sD%,XB%,ZC%,PE%,k%,ND%,d%:d%=
shell_GetEventListOffset2(_U%!28,_U%!32,_U%+340,24,
d%>=0
shell_DoPopupSelect(_Q%,d%)
shell_HeapBlockFetch(256):
shell_Tracef0("ActionMenuSelect:Menu_Select event detected"):
&400CF,,_shell_blk%:XB%=
shell_HeapBlockFetch(256):
_U%!24=_U%!&FC
ZC%=0:_U%!264=1
shell_CheckSelection(_Q%):
ZC%>-1
_U%!264=1
_U%!264=0
_U%!264>0
"FontMenu_DecodeFontMenu",_Q%+ZC%,XB%
PE%=1
shell_Tracef0("ActionMenuSelect:FontMenu selection ("+
shell_GetString(XB%)+")"):
shell_FontMenuSelectFont(
shell_GetString(XB%),_U%!260):
_shell_FontMenuSelFN$=""
&400D5,,_U%!24,_Q%,XB%:A$=
shell_GetEventHandler(_U%!52,_U%!56,0):_temp%=XB%:$_temp%=
shell_StringStripTrailing($_temp%," "):
A$<>""
("FN"+A$+"($_temp%)")
_shell_FontMenuSelFN$<>""
("FN"+_shell_FontMenuSelFN$+"(FNshell_FontMenuGetLastSelectedFont)")
shell_HeapBlockReturn(XB%):
_U%!264=0
&45BC4,_U%!24,_Q%
sD%,,ND%:
shell_MenuCallHandler(sD%,ND%)
_shell_blk%!8=1
shell_HeapBlockExists(_U%!&E0)
_temp%=_U%!&E0:
$_temp%<>""
("FN"+$_temp%+"(_U%!52,_U%!56)")
shell_OpenMenu(_U%!36,_U%!40,_U%!24)
_shell_FontMenuSelFN$=""
shell_HeapBlockReturn(ND%):
shell_ActionAdjustButton:
l%,A$,k%,pC%,g%:pC%=
shell_HeapBlockFetch(&C+(
shell_WindowCountIcons(_U%!28)*32)):
shell_Tracef0("Action:Mouse Button was ADJUST"):
_U%!28>0
&400D6,_U%!28,pC%,&F000,&B000:g%=0:
pC%!g%<>-1:
pC%!g%=_U%!32
shell_IconSet(_U%!28,_U%!32,1)
g%+=4:
_U%!32=0
shell_HandleAttachedDataSave(_Q%,_U%!28,_U%!32)
shell_GetEventHandler(_U%!28,_U%!32,3):
A$<>""
shell_IconSlab(1,_U%!28,_U%!32):k%=
("FN"+A$+"(_temp28%,_temp32%)")
shell_HeapBlockReturn(pC%):
shiftmenuclick(b%,f%):=
shell_IconSlab(lB%,b%,f%):
a%:a%=
shell_HeapBlockFetch(50):a%!8=lB%:a%!&C=b%:a%!16=f%:
&81680,,a%:a%!8=0:
&81680,,a%:
shell_HeapBlockReturn(a%):
shell_PointerLeavingWindow(_Q%):
s%,k%,IB%:s%=
shell_HeapBlockFetch(&C):
&600D6,!_Q%,s%,&3F0000,&F<<16
;IB%:
IB%=0
!s%<>-1
3+k%=
("FN"+
shell_IconGetData(!_Q%,!s%))
shell_HeapBlockReturn(s%):
shell_PointerEnteringWindow(_Q%):
s%,k%,b%:b%=_Q%!0:s%=
shell_HeapBlockFetch(&C):
&400D6,b%,s%,&3F0000,&E<<16:
!s%<>-1
D)k%=
("FN"+
shell_IconGetData(b%,!s%))
shell_HeapBlockReturn(s%):
shell_RedrawWindow(h%):
VD%,A$,QA%,TA%,a%,s%:
shell_HeapBlockFetch(&C):
&400D6,h%,s%,&3F0000,&D<<16:
!s%<>-1
V!A$=
shell_IconGetData(h%,!s%)
shell_HeapBlockReturn(s%):a%=
shell_HeapBlockFetch(&64):
A$=""
]&A$=
shell_GetEventHandler(h%,-1,4)
shell_FatalError
`Wa%!0=h%:
&400C8,,a%
VD%:QA%=a%!4-a%!20:TA%=a%!16-a%!24:
&81681,,a%:
A$<>""
f/k%=
("FN"+A$+"("+
a%+","+
QA%+","+
TA%+")")
&400CA,,a%
shell_HeapBlockReturn(a%):
shell_Receive(_Q%):
c%,k%:
_Q%!16
shell_Exit:
shell_DataSave(_Q%)
shell_DataSaveAck(_Q%)
shell_DataLoad(_Q%,
shell_DataLoadAck(_Q%)
shell_DataLoad(_Q%,
shell_RAMFetch(_Q%)
shell_RAMTransmit(_Q%)
shell_Message_PreQuit(_Q%)
_U%!&A4>0
shell_Tracef0("Receive:PaletteChange message received"):c%=_U%!&A4:k%=
("FN"+$c%)
shell_Message_SaveDesktop(_Q%)
shell_Message_Shutdown(_Q%)
shell_InteractiveHelp(_Q%)
shell_MenuWarning(_Q%)
shell_Message_ModeChange(_Q%)
_U%!&A8>0
shell_Tracef0("Receive:TaskInitialise message received"):c%=_U%!&A8:k%=
("FN"+$c%+"("+
(_Q%!4)+","+
shell_GetString(_Q%+28)+
34+")")
_U%!&D0=-1
shell_GetString(_Q%+28)="StrongHelp"
_U%!&D0=_Q%!4:
shell_StrongHlpMsg("Help_Install -DieWithTask "+
shell_GetAppDir+"."+
shell_GetAppName):c%=_U%!&D8:
$c%<>""
shell_HelpWord($c%):
shell_HeapBlockReturn(_U%!&D8):_U%!&D8=0
_U%!&AC>0
shell_Tracef0("Receive:TaskCloseDown message received"):c%=_U%!&AC:k%=
("FN"+$c%)
_Q%!4=_U%!&D0
_U%!&D0=-1
shell_Tracef0("Receive:TaskNameIs message received"):
shell_GetString(_Q%+28)="StrongHelp"
_U%!&D0=_Q%!20
shell_ScanForHelp
&80140:
shell_HandlePrintFile(_Q%)
&80143:
shell_HandlePrintError(_Q%)
&80145:
shell_HandlePrintTypeOdd(_Q%)
&80147:
shell_HandleSetPrinter(_Q%)
shell_HandleUnknownMessage2(_Q%)
shell_Message_ModeChange(_Q%):
d%,g%,pB%,p%:pB%=_U%!&B8:
_U%!&A0>0
shell_Tracef0("Message_ModeChange:ModeChange message received"):c%=_U%!&A0:k%=
("FN"+$c%)
shell_HeapBlockFetch(&64):
pB%<>0
shell_Tracef0("Message_ModeChange:Checking static window list for pane events"):
pB%!g%<>-1:d%=
shell_GetEventListOffset(pB%!g%,-1,_U%+92,24,
d%>-1
shell_Tracef0("Message_ModeChange:Static window handle found"):
shell_WindowIsOpen(pB%!g%)
shell_Tracef0("Message_ModeChange:Window is open.."):!p%=pB%!g%:
&400C6,,p%:
shell_OpenWindow(pB%!g%,0,-1)
:g%+=4:
shell_HeapBlockReturn(p%):
shell_Message_Shutdown(_Q%):
_U%!312>0
shell_Tracef0("Message_Shutdown:Shutdown message received"):c%=_U%!312:k%=
("FN"+$c%)
shell_HandleUnknownMessage2(_Q%):
_Q%!16
&43B00:b$=$(_Q%+20):
b$,30)="EvntShellLib:ShellDBug started"
_U%!&64
"r_U%!&64=(_U%!&64
1<<4):
shell_BroadcastMessage(&43B00,"ShellDBug:Init Debug messages from "+
shell_GetAppName)
b$,25)="EvntShellLib:TraceInitAck"
_U%!&64=(_U%!&64
1<<4)
b$,20)="EvntShellLib:TraceOn"
shell_TraceOn
b$,21)="EvntShellLib:TraceOff"
shell_TraceOff
b$,28)="EvntShellLib:ListClickSelect"
shell_ListClickSelect
b$,28)="EvntShellLib:ListClickAdjust"
shell_ListClickAdjust
b$,25)="EvntShellLib:ListHelpTags"
shell_ListHelpTags
shell_HandleUnknownMessage(_Q%):
shell_HandleUnknownMessage(_Q%):
shell_AttachPreQuitHandler(A$):
c%,k%:
_U%!300>0
shell_HeapBlockReturn(_U%!300)
N<_U%!300=
shell_HeapBlockFetch(
A$+1):c%=_U%!300:$c%=A$:
shell_AttachShutdownHandler(A$):
c%,k%:
_U%!312>0
shell_HeapBlockReturn(_U%!312)
Z<_U%!312=
shell_HeapBlockFetch(
A$+1):c%=_U%!312:$c%=A$:
shell_AttachModeChangeHandler(A$):
c%,k%:
_U%!&A0>0
shell_HeapBlockReturn(_U%!&A0)
fJ_U%!&A0=
shell_HeapBlockFetch(
A$+1):c%=_U%!&A0:$c%=A$:k%=
("FN"+A$):
shell_AttachPaletteChangeHandler(A$):
c%,k%:
_U%!&A4>0
shell_HeapBlockReturn(_U%!&A4)
sJ_U%!&A4=
shell_HeapBlockFetch(
A$+1):c%=_U%!&A4:$c%=A$:k%=
("FN"+A$):
shell_AttachTaskInitialiseHandler(A$):
c%,k%:
_U%!&A8>0
shell_HeapBlockReturn(_U%!&A8)
<_U%!&A8=
shell_HeapBlockFetch(
A$+1):c%=_U%!&A8:$c%=A$:
shell_AttachTaskCloseDownHandler(A$):
c%,k%:
_U%!&AC>0
shell_HeapBlockReturn(_U%!&AC)
<_U%!&AC=
shell_HeapBlockFetch(
A$+1):c%=_U%!&AC:$c%=A$:
shell_RAMFetch(_Q%):
GH%,eE%,jE%:jE%=
_U%!&90>&8000
shell_Tracef0("RAMFetch:RAMFetch called.."):_Q%!&C=_Q%!8:_Q%!16=7:eE%=_U%!&88:
_U%!&8C=&FF9
_U%!&90+=4
(eE%-_U%!&80)<_Q%!24
_Q%!24=eE%-_U%!&80:jE%=
shell_Tracef0("RAMFetch:Sending block")
&400F1,_U%!&94,_U%!&90+_U%!&80,_Q%!4,_Q%!20,_Q%!24:
&400E7,17,_Q%,_Q%!4:_U%!&78=_Q%!8:_U%!&80+=_Q%!24:
_U%!&80=0
shell_RAMTransmit(_Q%):
d%,a%,cA$,c%:
_Q%!&C=_U%!&70
$_U%!&80+=_Q%!24:
_Q%!24<_U%!&84
shell_Tracef0("RAMTransmit:Last block received"):d%=
shell_GetEventListOffset(_U%!28,_U%!32,_U%+96,16,
):a%=_U%!96+d%:
shell_Tracef0("RAMTransmit:_U%!28="+
_U%!28):
shell_Tracef0("RAMTransmit:_U%!32="+
_U%!32)
shell_Tracef0("RAMTransmit:offset%="+
d%):c%=_U%!&9C:cA$=
shell_GetString(c%+44):
shell_UserFNLoadFile(c%!40,_U%!&98,a%!8,cA$,_U%!&84,a%)
shell_Tracef0("RAMTransmit:Block received"):
_U%!&80>_U%!&84
shell_Tracef0("RAMTransmit:Increasing buffer size.."):_U%!&98=
shell_HeapBlockExtend(_U%!&98,_U%!&80,_U%!&84)
:_Q%!&C=_Q%!8:_Q%!16=6:_Q%!20=_U%!&98+_U%!&80:_Q%!24=_U%!&84:
&400E7,18,_Q%,_Q%!4:_U%!&70=_Q%!8
shell_HeapBlockReturn(_U%!&98):_U%!&98=0:
shell_OK(
shell_MessageNoArgs("SHELLMSG15"))
shell_LoadFile(HH%):
v$,iB%,BD%,QB%:v$=
shell_GetString(_Q%+44):iB%=
shell_FileLength(v$):
iB%<0
shell_OK(
shell_MessageNoArgs("SHELLMSG16"))
PQB%=
shell_HeapBlockFetch(iB%):
&20008,16,v$,QB%,0
;BD%:
shell_VFlag(BD%)
shell_HeapBlockReturn(QB%):
shell_OK(
shell_MessageNoArgs("SHELLMSG17"))
shell_Tracef0("LoadFile:File "+v$+" loaded ok at &"+
~QB%)
:=QB%
shell_VFlag(BD%):=((BD%
1)=1)
shell_CheckType(x%,rB%,sB%):
NH%,g%,m%,c%,ED%:g%=0:m%=-1:ED%=
_U%!&64
_U%!&64=_U%!&64
rB%!g%<>-1:c%=rB%!g%:
1<<31
c%=c%
1<<31:ED%=
c%=x%
m%=g%:
(L_U%!&64=_U%!&64
1<<1:
shell_Tracef0("CheckType:Top Bit Load detected..")
:g%+=4:
(x%>=4096)
m%=-1
m%>-1
shell_Tracef0("CheckType:File type OK "+
~rB%!m%)
shell_Tracef0("CheckType:File type NOT ok "+
m%<>-1
shell_Exit:
xB%:xB%=_U%!68:
&61504,xB%:
&2001E,7,,xB%:
shell_Tracef0("Exit:Application closing down"):
shell_TraceExit:
&606C2:
&600D0,,-1:
shell_WimpCloseDown_I(_U%!&94):
shell_DataLoad(_Q%,sB%):
KH%,d%,a%,_temp%,rB%,x%,i$:
shell_DataOpenOKToLoad(sB%,_Q%!40)
Qdx%=_Q%!40:i$=
shell_GetString(_Q%+44):
shell_Tracef0("DataLoad:DataLoad message received"):
_U%!96<>0
d%=-1
shell_GetEventListOffset(_Q%!20,_Q%!24,_U%+96,16,
d%=-1
f7d%=
shell_GetEventListOffset(_Q%!20,-1,_U%+96,16,
d%>-1
k4a%=_U%!96+d%:
shell_CheckType(_Q%!40,a%!8,sB%)
shell_Tracef0("DataLoad:File type recognised (&"+
~_Q%!40+")"):bG%=_Q%!&C:_Q%!&C=_Q%!8:_Q%!16=4:
&400E7,18,_Q%,_Q%!4:
_U%!&64
QB%=-1:_U%!&64=_U%!&64
shell_LoadFile(bG%=_U%!&6C)
shell_UserFNLoadFile(x%,QB%,a%!8,i$,_Q%!36,a%):
_U%!&9C<>0
shell_HeapBlockReturn(_U%!&9C):_U%!&9C=0
shell_Tracef0("DataLoad:File type NOT recognised (&"+
~_Q%!40+")")
shell_DataOpenOKToLoad(sB%,x%):
w%,ME%,TA$,OA$:
shell_Tracef0("DataOpenOKToLoad:Message reason code was 3, normal drag load..")
shell_Tracef0("DataOpenOKToLoad:Message reason code was 5, double click load.."):ME%=
shell_HeapBlockFetch(256):TA$=
shell_OSVarGetVal(ME%,256,"Alias$@RunType_"+
~x%,1):
shell_Tracef0("DataOpenOKToLoad:Alias$@RunType="+TA$)
shell_HeapBlockReturn(ME%):OA$=
shell_Branch(TA$):
shell_Tracef0("DataOpenOKToLoad:dbug "+OA$):
shell_Leaf(OA$)="!"+
shell_GetAppName
shell_UserFNLoadFile(x%,QB%,rB%,_filename$,_file_size%,a%):
g%,m%,c%,k%:g%=0:m%=-1:
rB%!g%<>-1:c%=rB%!g%:
1<<31
c%=c%
1<<31
c%=x%
m%=g%
[g%+=4:
:c%=a%!&C:k%=
("FN"+$(c%!m%)+"("+
QB%+","+
x%+",_filename$,"+
_file_size%+")"):
shell_DataSave(_Q%):
c%,d%,a%,y%:
shell_Tracef0("DataSave:DataSave message received"):
_Q%!4<>_U%!&94
shell_GetEventListOffset(_Q%!20,_Q%!24,_U%+96,16,
d%>-1
2a%=_U%!96+d%:
shell_CheckType(_Q%!40,a%!8,
shell_Tracef0("DataSave:Filetype recognized (&"+
~_Q%!40+")"):
shell_TopBitLoadInProgress
shell_Tracef0("DataSave:'no load' flag set"):
shell_Tracef0("DataSave:Sending Message_DataSaveAck"):_Q%!0=256:_Q%!&C=_Q%!8:_Q%!36=-1:_Q%!16=2:$(_Q%+44)=
shell_GetAppDir+".ScrapFile"+
&400E7,18,_Q%,_Q%!4
shell_HeapBlockReturn(_U%!&9C):_U%!&9C=
shell_HeapBlockFetch((_Q%!0)+8):c%=_U%!&9C:
_Q%!0
4:c%!y%=_Q%!y%:
y%:_U%!28=_Q%!20:_U%!32=_Q%!24:_U%!&80=0:_U%!&84=_Q%!36:_U%!&98=
shell_HeapBlockFetch(_Q%!36):_Q%!0=28:_Q%!&C=_Q%!8:_Q%!16=6
_Q%!20=_U%!&98+_U%!&80:_Q%!24=_U%!&84:
&400E7,18,_Q%,_Q%!4:_U%!&70=_Q%!8:
shell_Tracef0("DataSave:Sending Message_RAMFetch")
shell_Tracef0("DataSave:Filetype NOT recognized")
shell_TopBitLoadInProgress:
_U%!&64
shell_SendDataSave(b%,f%):
a%,GA%,tB%,d%,iB%,k%:tB%=
shell_HeapBlockFetch(30):
&400CF,,tB%:d%=
shell_GetEventListOffset(b%,f%,_U%+72,24,
d%=-1
d%=-2
shell_MessageWindow(
shell_MessageNoArgs("SHELLMSG13"),0,"",
shell_MessageNoArgs("warning"))
a%=(_U%!72)+d%:
a%!8>&8000
$iB%=
shell_HeapBlockInfo(a%!8)-4
iB%=a%!8
:GA%=_U%!76:GA%!0=256:GA%!&C=0:GA%!16=1:GA%!20=tB%!&C:GA%!24=tB%!16:GA%!28=tB%!0:GA%!32=tB%!4:GA%!36=iB%:GA%!40=a%!&C:$(GA%+44)=
shell_Leaf(
shell_IconGetData(b%,a%!16)):
&400E7,18,GA%,GA%!20,GA%!24:_U%!&78=_Q%!8:_U%!&88=iB%:_U%!&8C=a%!&C
-;_U%!&90=a%!8:_U%!&9C=a%!4:_U%!&C8=GA%!20:_U%!&CC=GA%!24
shell_HeapBlockReturn(tB%):
shell_DataSaveAck(_Q%):
_fullname$,PA%,kA%,a%,c%,k%:
shell_Tracef0("DataSaveAck:DataSaveAck message received"):PA%=0:kA%=_Q%?(44+PA%):
kA%<>0:_fullname$+=
(kA%):PA%+=1:kA%=_Q%?(44+PA%):
shell_Tracef0("DataSaveAck:Full save name is: "+_fullname$)
shell_Tracef0("DataSaveAck:task = &"+
_Q%!4):
shell_Tracef0("DataSaveAck:mytask = &"+
_U%!&94):d%=
shell_GetEventListOffset(_U%!28,_U%!32,_U%+72,24,
shell_Tracef0("DataSaveAck:offset% = "+
d%>=0
L%a%=(_U%!72)+d%:c%=a%!20:
$c%<>""
P!k%=
("FN"+$c%+"(_fullname$)")
shell_HeapBlockExists(a%!8)
8,&A,_fullname$,a%!&C,,a%!8,a%!8+
shell_HeapBlockInfo(a%!8)+1
shell_MessageNoArgs("SHELLMSG21")
_Q%!36>-1
_U%!80<>0
shell_HeapBlockReturn(_U%!80)
_H_U%!80=
shell_HeapBlockFetch(
_fullname$+1):c%=_U%!80:$c%=_fullname$
:_Q%!16=3:!_Q%=256:_Q%!20=_U%!&C8:_Q%!24=_U%!&CC:_Q%!40=_U%!&8C:_Q%!36=
shell_FileLength(_fullname$):_Q%!&C=_Q%!8:
shell_Tracef0("DataSaveAck:File length is "+
_Q%!36+" bytes"):$(_Q%+44)=_fullname$+
(0):_U%!84=_Q%!8
shell_Tracef0("DataSaveAck:Sending DataLoad Message"):
&400E7,18,_Q%,_Q%!20,_Q%!24:
_U%!28<>_U%!20
shell_CloseWindow(_U%!28)
&400D4,,-1
shell_PrintSave(_fullname$,_Q%!20,_Q%!24,_Q%!8,_Q%!40):
shell_Tracef0("DEBUG:: copies = "+
(_U%!336)):
_U%!336>0
z+_U%!336-=1:
shell_DoSendPrintSave(&FFF)
shell_DataSaveCheckName(b%,f%):
d%,a%,q%:a%=_U%!72:d%=0:
a%<>0
shell_HeapBlockInfo(a%)-8:
!(a%+d%)=b%
shell_IconGetData(!a%,a%!16):
R$,".")=0
shell_OK(
shell_MessageNoArgs("SHELLMSG01"))
d%=q%
:d%+=24:
d%>=q%
shell_DataLoadAck(_Q%):
shell_Tracef0("DataLoadAck:DataLoadAck message received (file received ok)"):
shell_UserMessageAcknowledge(_Q%):
_Q%!16
shell_AckDataLoad(_Q%)
shell_AckRAMFetch(_Q%)
shell_AckDataLoad(_Q%):
_Q%!&C<>_U%!84
&20008,6,"<Wimp$Scrap>":
&FF,"Data Transfer failed: Receiver died"
shell_AckRAMFetch(_Q%):
_F%,c%:c%=_U%!&9C:
shell_Tracef0("AckRAMFetch:AckRAMFetch called...."):
_Q%!&C<>_U%!&70
_U%!&80=0
shell_Tracef0("AckRAMFetch:Receiver does not support RAM transfer"):
&20023,"Wimp$Scrap",,-1,0,3
,,_F%:
_F%<>0
$(c%+44)="<Wimp$Scrap>"+
(0):c%!0=(49+
shell_GetString(c%+44)))
3:c%!&C=c%!8:c%!16=2:c%!36=-1:
&400E7,18,c%,c%!4:_U%!&6C=c%!8
shell_OK(
shell_MessageNoArgs("SHELLMSG14"))
shell_Tracef0("AckRAMFetch:RAM transfer started, but not enough data sent. Sender died?"):
shell_HeapBlockReturn(_U%!&98):_U%!&98=0:
shell_OK("SHELLMSG06")
shell_MenuWarning(_Q%):
A$,XB%,LA%,RA%,k%,_temp%,PA%,E$,uB%,a%:LA%=_Q%!24:RA%=_Q%!28:_U%!264=0:
_U%!20<>0
shell_Tracef0("MenuWarning:Removing last dynamic dbox (handle=&"+
~_U%!20+")"):k%=
shell_DeleteWindow(_U%!20):
shell_Tracef0("MenuWarning:Last dynamic dbox removed")
_Q%!20
_U%!&E4:
shell_WindowRetitle(_U%!&E4,
shell_MessageNoArgs("warning")):
shell_IconPutData(_U%!&E4,1,
shell_MessageNoArgs("SHELLMSG07"),0):
&400E8,,_U%!&E4,LA%,RA%
shell_MenuGetItemAddress(_U%!24,_Q%+32):
shell_HeapBlockExists(uB%!4)
shell_MenuWarnDBox(uB%,LA%,RA%)
shell_HeapBlockFetch(32):
&45BC4,_U%!24,_Q%+32
,,a%:
shell_FindMenuWarnEvent(a%!8,E$,J$):
shell_HeapBlockReturn(a%):
shell_MenuWarnSubMenu(_Q%!20,LA%,RA%,E$,J$)
shell_MenuWarnDBox(DB%,LA%,RA%):
c%,t%,k%:
c%=DB%!4:
shell_CreateWindow($c%!0,t%):
shell_Tracef0("MenuWarnDBox:Creating new dynamic dbox (handle=&"+
~t%+")"):
$c%!4<>""
shell_Tracef0("MenuWarnDBox:Calling preopen FN '"+$c%!4+"'"):k%=
("FN"+$c%!4+"("+
t%+")")
$c%!8<>""
shell_Tracef0("MenuWarnDBox:Calling postopen FN '"+$c%!8+"'"):k%=
("FN"+$c%!8+"("+
t%+")")
&400E8,,t%,LA%,RA%:_U%!20=t%:
shell_FindMenuWarnEvent(dA%,
w%,z%,c%,d%,m%,q%,CA%,g%:
vB%:vB%=0:z%=_U%!&DC:d%=0:m%=
:E$="":vB%=0:
shell_HeapBlockExists(z%)
:g%+=4:
z%!g%=-1:q%=g%:g%=0:
shell_Tracef0("FindMenuWarnEvent:list_size%="+
:c%=!(z%+d%+0):
c%<>-1
c%=dA%
Bum%=
:CA%=z%!(d%+4):E$=$CA%:vB%=z%!(d%+8):CA%=z%!(d%+&C):J$=$CA%:
shell_Tracef0("FindMenuWarnEvent:submenu found")
:d%+=16
d%=q%
d%>=q%
E$="":J$=""
vB%=0
shell_Tracef0("FindMenuWarnEvent:warn fn not found..")
shell_MenuWarnSubMenu(hD%,LA%,RA%,E$,J$):
k%,c%,SB%,g%:_shell_FontMenuSelFN$=J$:
shell_HeapBlockExists(_U%!&E0)
shell_HeapBlockReturn(_U%!&E0)
^C_U%!&E0=
shell_HeapBlockFetch(
E$+1):c%=_U%!&E0:$c%=E$:
E$<>""
aSk%=
("FN"+E$+"(_U%!52,_U%!56)"):
shell_Tracef0("MenuWarnSubMenu:Calling FN"+E$)
hD%=_U%!&FC
shell_Tracef0("MenuWarnSubMenu:FontMenu opening.."):
shell_HeapBlockExists(_U%!256)
shell_HeapBlockReturn(_U%!256)
g%=0:
:g%+=4:
!(_Q%+32+g%)=-1:g%+=4:_U%!256=
shell_HeapBlockFetch(g%):c%=_U%!256:g%=0:
:c%!g%=!(_Q%+32+g%):g%+=4:
!(_Q%+32+g%)=-1:c%!g%=!(_Q%+32+g%):c%=_U%!256
shell_Tracef0("MenuWarnSubMenu:Selecting '"+
shell_FontMenuGetLastSelectedFont+"' in FontMenu.."):
"FontMenu_Select",
shell_FontMenuGetLastSelectedFont,_U%!260
,SB%:_U%!264=1:
SB%<>_U%!&FC
shell_FontMenuUpdatePtr(SB%):_U%!&FC=SB%:hD%=SB%
_U%!264=0
&400E8,,hD%,LA%,RA%:
shell_AttachSubMenu(VB%,vB%,E$):
&45BCE,VB%,vB%:
E$<>""
&45BCC,,
shell_EventListMenuWarn(VB%,vB%,E$,"")
shell_EventListMenuWarn(VB%,oF%,E$,J$):
c%,CA%,g%,z%:
_U%!&DC=0
_U%!&DC=
shell_HeapBlockFetch(32):c%=_U%!&DC:c%!0=VB%:c%!4=
shell_HeapBlockFetch(
E$+1):$(c%!4)=E$:c%!8=oF%:c%!&C=
shell_HeapBlockFetch(
J$+1):$(c%!&C)=J$:c%!16=-1:c%!20=-1:c%!24=-1:c%!28=-1
shell_HeapBlockExtend(_U%!&DC,32):_U%!&DC=z%:g%=0:
:g%+=16:
z%!g%=-1:c%=_U%!&DC:c%!g%=VB%:c%!(g%+4)=
shell_HeapBlockFetch(
E$+1):CA%=c%!(g%+4):$(CA%)=E$:c%!(g%+8)=oF%:c%!(g%+&C)=
shell_HeapBlockFetch(
J$+1):CA%=c%!(g%+&C):$(CA%)=J$
;c%!(g%+16)=-1:c%!(g%+20)=-1:c%!(g%+24)=-1:c%!(g%+28)=-1
shell_InteractiveHelp(_Q%):
G$,a$,K$,YB%,pD%,sA$,s%,l%:s%=
shell_HeapBlockFetch(&C):
&600D6,_Q%!32,s%,&3F0000,&C<<16
!s%<>-1
shell_IconGetData(_Q%!32,!s%)
shell_HeapBlockReturn(s%):
G$=""
shell_GetEventHandler(_Q%!32,_Q%!36,8)
shell_IconGetValidation(_Q%!32,_Q%!36):
K$<>""
shell_StringUpperCase(
K$,1))="I"
K$,";"):
YB%=0
K$,2)
K$,2,YB%-2)
shell_StringUpperCase(K$),
shell_StringUpperCase(";i")):pD%=
shell_StringUpperCase(K$),
shell_StringUpperCase(";"),YB%+1):
YB%>0
pD%>0
K$,YB%+2,pD%-YB%-2)
K$,YB%+2)
G$<>""
_Q%!16=&503:_Q%!&C=_Q%!8:a$=
shell_MessageLookup(G$,"",""):a$=
shell_MessageExpand(a$):$(_Q%+20)=a$:!_Q%=(
a$+25)
&400E7,17,_Q%,_Q%!4
shell_Message_PreQuit(_Q%):
c%,rD%,a%,y%,uD%:
_U%!300>0
shell_HeapBlockFetch(256):
_Q%!0
4:a%!y%=_Q%!y%:
shell_Tracef0("Message_PreQuit:PreQuit message received"):c%=_U%!300:rD%=a%!4:
!a%<24
uD%=0
uD%=a%!20
2a%!&C=a%!8:
&400E7,19,a%,rD%:
("FN"+$c%)<>0
_closedown%=
!a%=24:a%!24=508:
&400E7,8,a%,rD%:_closedown%=
shell_HeapBlockReturn(a%)
lwaorigin(A,
RA%):LA%=A!0-A!16:RA%=A!&C-A!20:
shell_Iconbar(FA%,PA$,I$,_D%,n%,QC%,LC%,oC%):
I$=""
&K!_Q%=FA%:_Q%!4=0:_Q%!8=0:_Q%!&C=70:_Q%!16=70:_Q%!20=&301A:$(_Q%+24)=PA$
!_Q%=FA%:_Q%!4=0:_Q%!8=-16:_Q%!&C=_D%:_Q%!16=90:_Q%!20=&1700210B:
_Q%!24&C:
_Q%!28
(PA$)+2:$(_Q%!24)=I$:$(_Q%!28)="S"+PA$:_Q%!32=&C
&400C2,,_Q%
shell_AttachMenu(-2,h%,n%,QC%,LC%,oC%):=h%
shell_IconbarSetText(t%,yG%,L$):
j%,p%:j%=
shell_HeapBlockFetch(40):p%=
shell_HeapBlockFetch(36):p%!20=0:
shell_OSCheckVersion(3)
t%=-1
!p%=-2
!p%=t%
&400CB,,p%
:!j%=t%:j%!4=yG%:
&400CE,,j%:$(j%!28)=L$:
&400D1,-1,j%!8-&64-p%!20,j%!&C,j%!16+&64-p%!20,j%!20:
shell_HeapBlockReturn(j%):
shell_HeapBlockReturn(p%):
shell_WritableIconHandler(b%,f%,WA%):
oA%,NC%,OC%,g%:
TE%,aE%,sA%,BB%,PB%,zG%,u%:u%=
shell_HeapBlockFetch(&400):
&400D3,,u%:
!u%=-1
shell_HeapBlockReturn(u%):=
&400D6,b%,u%,&40E000,&E000:NC%=!u%:g%=0:
u%!g%=f%
TE%=u%!(g%-4):aE%=u%!(g%+4)
:g%+=4:
u%!g%=-1:OC%=u%!(g%-4):
shell_FakeMouseClick(b%,0,4)
398,394:
f%=OC%
&400D2,b%,NC%,-1,-1,-1,
shell_IconGetData(b%,NC%))
&400D2,b%,aE%,-1,-1,-1,
shell_IconGetData(b%,aE%))
399,410:
f%=NC%
&400D2,b%,OC%,-1,-1,-1,
shell_IconGetData(b%,OC%))
&400D2,b%,TE%,-1,-1,-1,
shell_IconGetData(b%,TE%))
&400D2,b%,NC%,-1,-1,-1,
shell_IconGetData(b%,NC%))
&400D2,b%,OC%,-1,-1,-1,
shell_IconGetData(b%,OC%))
shell_HeapBlockReturn(u%):=
shell_FakeMouseClick(b%,f%,lB%):
6,&F,1:_Q%!8=lB%:_Q%!&C=b%:_Q%!16=f%:
shell_Action(6):
shell_IconHasCaret(BA%,yB%):
u%,UA%,JA%:u%=
shell_HeapBlockFetch(24):
&400D3,,u%:JA%=u%!0:UA%=u%!4:
shell_HeapBlockReturn(u%):
(UA%=yB%
JA%=BA%)
shell_IconCreate(b%,LB%,rA%,_D%,t%,eD%,fD%,wG%,O$,DB%,_B%,K$):
SG%,h%,KC%,j%:j%=
shell_HeapBlockFetch(40):j%!0=b%:j%!4=LB%:j%!8=rA%:j%!&C=LB%+_D%:j%!16=rA%+t%:j%!20=wG%
fD%<<28
eD%<<24:
j%!20
#SG%=
O$,","):j%!24=DB%:
K$<>""
6KC%=
shell_HeapBlockFetch(
K$+1):$KC%=K$:j%!28=KC%
j%!28=-1
:j%!32=_B%
$(j%+24)=
O$,&B)
&400C2,,j%
shell_HeapBlockReturn(j%):=h%
shell_IconDelete(b%,f%):
shell_DoIconDelete(b%,f%,
shell_IconDelete2(b%,f%):
shell_DoIconDelete(b%,f%,
shell_DoIconDelete(b%,f%,GG%):
a%,QA%,TA%,cA%,lA%:a%=
shell_HeapBlockFetch(40):a%!0=b%:a%!4=f%:
&400CE,,a%:
&8168A,,a%+8:QA%=a%!8:TA%=a%!&C:cA%=a%!16:lA%=a%!20:
&400CE,,a%:
shell_HeapBlockExists(a%!28)
shell_HeapBlockReturn(a%!28)
shell_HeapBlockExists(a%!32)
shell_HeapBlockReturn(a%!32)
&400C4,,a%:
&400D1,b%,QA%,TA%,cA%,lA%
shell_HeapBlockReturn(a%):
shell_IconRadioSelection(BA%,jB%):
hF%,_C%,vF%,mE%:_C%=
shell_HeapBlockFetch(8):hF%=(jB%<<16)+(1<<21):mE%=(31<<16)+(1<<21):
&400D6,BA%,_C%,mE%,hF%:vF%=!_C%:
shell_HeapBlockReturn(_C%):=vF%
shell_IconPutData(JA%,UA%,O$,J):
a%,UA$:
_U%!&64
"WimpExt_SetIconString",,,JA%,UA%,O$+
shell_IconGetData(JA%,UA%):
O$<>UA$
shell_HeapBlockFetch(40):a%!0=JA%:a%!4=UA%:
&400CE,,a%:
(a%!24
(1<<8))<>0
O$>a%!36
shell_MessageNoArgs("SHELLMSG12")
$(a%!28)=O$
$(a%+28)=
O$,&B)
a%!8=0:a%!&C=0:
&400CD,,a%
shell_HeapBlockReturn(a%)
shell_IconPutDataNow(JA%,UA%,O$):
a%:a%=
shell_HeapBlockFetch(50):a%!0=JA%:a%!4=UA%:
&400CE,,a%:
(a%!24
(1<<8))<>0
O$>a%!36
shell_MessageNoArgs("SHELLMSG12")
$(a%!28)=O$
$(a%+28)=
O$,&B)
:a%!8=0:a%!&C=0:
&400CD,,a%:
shell_EnsurePoll:
shell_HeapBlockReturn(a%):
shell_IconNewSprite(JA%,UA%,eA$,J):
j%:j%=
shell_HeapBlockFetch(40):j%!0=JA%:j%!4=UA%:
&400CE,,j%:
&400C4,,j%:j%!4=j%!8:j%!8=j%!&C:j%!&C=j%!16:j%!16=j%!20:j%!20=j%!24:$(j%+24)=eA$:
&400C2,,j%
&400D1,j%!0,j%!4,j%!8,j%!&C,j%!16
shell_HeapBlockReturn(j%):=UA%
shell_IconGetData(JA%,UA%):
M$,j%:
UA%<0
JA%<-2
_U%!&64
"WimpExt_GetIcon",,,JA%,UA%
,,,M$
shell_HeapBlockFetch(40):j%!0=JA%:j%!4=UA%:
&400CE,,j%:
(j%!24
(1<<8))<>0
M$=$(j%!28)
M$=$(j%+28)
shell_HeapBlockReturn(j%)
shell_IconMove2(b%,f%,qE%,rE%):
AA%:AA%=
shell_HeapBlockFetch(40):!AA%=b%:AA%!4=f%:
&400CE,,AA%:AA%!8+=qE%:AA%!16+=qE%:AA%!&C+=rE%:AA%!20+=rE%:f%=
shell_IconMove(b%,f%,AA%!8,AA%!&C,AA%!16,AA%!20):
shell_HeapBlockReturn(AA%):=f%
shell_IconResize(b%,f%,QA%,TA%,cA%,lA%):=
shell_IconMove(b%,f%,QA%,TA%,cA%,lA%)
shell_IconMove(b%,f%,QA%,TA%,cA%,lA%):
s%,OH%,BH%,MB%,a%:
JF%,RF%,WF%,XF%:s%=
shell_HeapBlockFetch(40):a%=
shell_HeapBlockFetch(40):!s%=b%:s%!4=f%:
&400CE,,s%:!a%=b%:a%!4=f%:
&400CE,,a%:
&8168A,,a%+8:MG%=s%!24:WE%=s%+28
JF%=MG%:RF%=WE%!0:WF%=WE%!4:XF%=WE%!8:MB%=s%!8-a%!8:
&400C4,,s%:
&400D1,!s%,s%!8-MB%,s%!&C-MB%,s%!16+MB%,s%!20+MB%:f%=
shell_CreateIcon2(b%,QA%,TA%,cA%,lA%,JF%,RF%,WF%,XF%,MB%):
shell_HeapBlockReturn(s%):
shell_HeapBlockReturn(a%):=f%
shell_CreateIcon2(h%,QA%,TA%,cA%,lA%,l%,TG%,VG%,nG%,MB%):
_%,OA%,I$,f$,LB%,rA%:OA%=
shell_HeapBlockFetch(60):!OA%=h%:OA%!20=l%:OA%!24=TG%:OA%!28=VG%:OA%!32=nG%:I$="":f$="":
256I$=$(OA%!24)
I$=$(OA%+24)
shell_IconGetCommand(OA%!28,"S")
f$=$(OA%+24)
shell_GetMinXY(l%,I$,f$):
cA%-QA%<LB%
cA%=QA%+LB%
lA%-TA%<rA%
lA%=TA%+rA%
OA%!4=QA%:OA%!8=TA%:OA%!&C=cA%:OA%!16=lA%:
&400C2,,OA%
&400D1,!OA%,OA%!4-MB%,OA%!8-MB%,OA%!&C+MB%,OA%!16+MB%:
&400D3,,OA%:
!OA%=h%:
OA%!4=_%:
&400D2,h%,_%,0,0,-1,0
shell_HeapBlockReturn(OA%):=_%
shell_GetMinXY(l%,I$,f$):
QA%,TA%,cA%,lA%,BB%,PB%:LB%=0:rA%=0:
I$<>""
&40084,l%>>24
,,TA%,,lA%:
&40097,,
(l%>>24)+I$
,QA%,,cA%:
&40088,,QA%
,QA%:
&40088,,cA%
,cA%:LB%=cA%-QA%:rA%=lA%-TA%
LB%=6*CH%+16*
I$:rA%=32
4rA%+=2*EH%
f$<>""
&2002E,296,
shell_UserSpritesBase,f$
,,,BB%,PB%,,BG%;P%:
&20035,BG%,4
,,EG%:BB%=BB%<<EG%:
&20035,BG%,5
,,eG%:PB%=PB%<<eG%:
&800 BB%=BB%/2:PB%=PB%/2
539)=19BB%=LB%+BB%
BB%>LB%LB%=BB%
PB%>rA%rA%=PB%
shell_IconGetCommand(AD%,iA$):
I%,M$:
AD%<=0
M$=""
shell_StringUpperCase($AD%),";"+
shell_StringUpperCase(iA$)):
M$=""
$(AD%+I%),
$(AD%+I%)+";",";")-1)
shell_IconRedraw(b%,f%):
a%:a%=
shell_HeapBlockFetch(40):!a%=b%:a%!4=f%:
&400CE,,a%:
&8168A,,a%+8:
&400D1,b%,a%!8,a%!&C,a%!16,a%!20:
shell_Action(
shell_Poll_I(0,_U%!&94)):
shell_HeapBlockReturn(a%):
shell_IconGetValidation(b%,f%):
a%,K$,l%:
f%=-1
UK$="":a%=
shell_HeapBlockFetch(40):a%!0=b%:a%!4=f%:
&400CE,,a%:l%=a%!24:
a%!32>0
K$=$(a%!32)
shell_HeapBlockReturn(a%):=K$
shell_IconPutValidation(b%,f%,x$):
a%,l%:a%=
shell_HeapBlockFetch(&64):a%!0=b%:a%!4=f%:
&400CE,,a%:l%=a%!24:
$(a%!32)=x$
shell_HeapBlockReturn(a%):
shell_IsIconSelected(aB%,bB%):
shell_IconGetState(aB%,bB%):l%=_Q%!24:c%=(l%
&200000):
shell_IconSelect(aB%,bB%):
shell_IconSetState(aB%,bB%,&200000,&200000):
shell_IconDeselect(aB%,bB%):
shell_IconSetState(aB%,bB%,0,&200000):
shell_IconGetState(aB%,bB%):!_Q%=aB%:_Q%!4=bB%:
&400CE,,_Q%:
shell_IconSetSelected(b%,f%,iA%):
iA%=0
shell_IconDeselect(b%,f%)
shell_IconSelect(b%,f%)
shell_IconSet(b%,f%,iA%):
iA%=0
shell_IconDeselect(b%,f%)
shell_IconSelect(b%,f%)
shell_IconSetState(aB%,bB%,YG%,uG%):
j%:j%=
shell_HeapBlockFetch(16):!j%=aB%:j%!4=bB%:j%!8=YG%:j%!&C=uG%:
&400CD,,j%:
shell_HeapBlockReturn(j%):
shell_IconUnselectable(h%,dC%):
shell_IconSetState(h%,dC%,&400000,&40000):
shell_IconSetBGColour(b%,f%,uA%):
uA%<0
uA%>&F
shell_MessageOneArg("SHELLMSG24","PROCshell_IconSetBGColour")
shell_IconSetState(b%,f%,uA%<<28,&F0000000):
shell_IconSetFGColour(b%,f%,uA%):
uA%<0
uA%>&F
shell_MessageOneArg("SHELLMSG24","PROCshell_IconSetFGColour")
shell_IconSetState(b%,f%,uA%<<24,&F000000):
shell_CaretSetPosition(JA%,UA%,QG%,UG%,bA%,sA%):
&400D2,JA%,UA%,QG%,UG%,bA%,sA%:
shell_CaretReadPosition(
sA%):
u%:u%=
shell_HeapBlockFetch(24):
&400D3,,u%:JA%=u%!0:UA%=u%!4:eC%=u%!8:fC%=u%!&C:sA%=u%!20:
shell_HeapBlockReturn(u%):
shell_IconSetButtonType(b%,f%,gC%):
gC%=&C
gC%=&D
shell_MessageOneArg("SHELLMSG23","PROCshell_IconSetButtonType")
gC%<0
gC%>&F
shell_MessageOneArg("SHELLMSG22","PROCshell_IconSetButtonType")
shell_IconSetState(b%,f%,gC%<<&C,&F000):
shell_IconSetESG(b%,f%,jB%):
jB%<0
jB%>31
shell_MessageOneArg("SHELLMSG25","PROCshell_IconSetESG")
shell_IconSetState(b%,f%,jB%<<16,&1F0000):
shell_IconSetText(b%,f%,DA%):
DA%<>0
DA%=1<<0
shell_IconSetState(b%,f%,DA%,1<<0):
shell_IconSetSprite(BA%,yB%,DA%):
DA%<>0
DA%=1<<1
shell_IconSetState(BA%,yB%,DA%,1<<1):
shell_IconSetBorder(BA%,yB%,DA%):
DA%<>0
DA%=1<<2
shell_IconSetState(BA%,yB%,DA%,1<<2):
shell_IconSetHCentred(b%,f%,DA%):
shell_IconSetState(b%,f%,0,1<<9):
DA%<>0
DA%=1<<3
shell_IconSetState(b%,f%,DA%,1<<3):
shell_IconSetVCentred(b%,f%,DA%):
DA%<>0
DA%=1<<4
shell_IconSetState(b%,f%,DA%,1<<4):
shell_IconSetFilled(b%,f%,DA%):
DA%<>0
DA%=1<<5
shell_IconSetState(b%,f%,DA%,1<<5):
shell_IconSetRightJust(b%,f%,DA%):
shell_IconSetHCentred(b%,f%,0):
DA%<>0
DA%=1<<9
shell_IconSetState(b%,f%,DA%,1<<9):
shell_IconSetLeftJust(b%,f%):
shell_IconSetHCentred(b%,f%,0):
shell_IconSetRightJust(b%,f%,0):
shell_IconSetUnselectable(b%,f%,iA%):
iA%<>0
iA%=1<<22
shell_IconSetState(b%,f%,iA%,1<<22):
iA%<>0
shell_HeapBlockFetch(24):
&400D3,,u%:
!u%=b%
u%!4=f%
&400D2,-1
shell_HeapBlockReturn(u%)
shell_CaretSetRight(b%,f%):
&400D2,b%,f%,-1,-1,-1,
shell_IconGetData(b%,f%)):
print_text(K,L,I$):
in(K,L-32,K+16*
(I$),L)
in(A%,B%,C%,D%):
newvals:f=_Q%!28:i=_Q%!32:g=_Q%!36:h=_Q%!40:j=_Q%!4:k=_Q%!8:l=_Q%!&C:m=_Q%!16:O=_Q%!20:P=_Q%!24:p=l-j:q=m-k:AA=O:BA=O+p:CA=P:z=P-q:
max(PA%,kA%):
PA%<kA%
shell_Leaf(F$):
F$,"."):F$=
F$,".")+1):
shell_Branch(i$):
FA%,y$,c%:
i$,".")=0
7 y$=""
c%=0:
:FA%=c%+1:c%=
i$,".",FA%):
c%=0:y$=
i$,FA%-2)
gname(D):z$="":
?D<>0
?D<>&D:z$=z$+
?D:D+=1:
shell_WindowResize(JA%,xG%,kG%,aG%,oG%,DD%):!_Q%=xG%:_Q%!4=kG%:_Q%!8=aG%:_Q%!&C=oG%:
&400D7,JA%,_Q%:
Q)_Q%!0=JA%:
&400CC,,_Q%:
&400C5,,_Q%
shell_WindowRetitle(
JA%,T$):
c%,r%,h%,_E%:r%=
shell_HeapBlockFetch(&64+(
shell_WindowCountIcons(JA%)*32)):r%!0=JA%:
&400CC,,r%:
((r%!60)
256)=0
aAc%=r%+76:$c%=
T$,&B):
&400C3,,r%:
&400C1,,r%+4
h%<>JA%
shell_UpdateWindowHandle(JA%,h%):JA%=h%
_E%=r%!84:$(!(r%+76))=
T$,_E%-1):
((r%!32)
(1<<16))<>0
&400D1,-1,r%!4,r%!16,r%!&C,r%!16+44
shell_HeapBlockReturn(r%)
shell_WindowTitleIndirected(qB%):
(1<<8))=(1<<8)
shell_ScreenToWindowCoords(AF%,
jD%,BF%,_G%,CF%,DF%,AC%:AC%=
shell_HeapBlockFetch(&64+(
shell_WindowCountIcons(AF%)*32)):jD%=AC%:!jD%=AF%:
&400CC,,jD%:BF%=AC%!4:RG%=AC%!16:CF%=AC%!20:DF%=AC%!24:X%=X%+(CF%-BF%):Y%=Y%+(DF%-RG%)
shell_HeapBlockReturn(AC%):
shell_WimpSlotReadEnd:
&400EC,-1,-1
RC%:=RC%
shell_WimpSlotClaimMemory(RC%,qA%):
&400EC,RC%+qA%,-1
kD%<RC%+qA%
shell_WimpSlotReleaseMemory:
&400EC,RC%,-1:
shell_MouseLimit(A,JA%):A!0=JA%:
&400CB,,A:
mouse_rectangle(A!4,A!8,A!&C-A!4,A!16-A!8):
shell_NameOfFirstSprite(qA$):
X%,N%,_$:X%=
(qA$):
#X%=4:N%=
#X%:N%+=
#X%*256:N%+=
#X%*65536:N%+=
#X%*&1000000:
#X%=N%:_$="":
&B:_$+=
#X%):
#X%:=_$
InitialiseSpriteArea(S%,fG%):!S%=fG%:S%!8=16:
46,9+256,S%:
shell_ListEvents(b%,_%):
n%,h$:
b%=-1
b%=-2
shell_Tracef0("MenuSelection="+
shell_GetEventHandler(b%,_%,0)):
shell_Tracef0("MenuMaker ="+
shell_GetEventHandler(b%,_%,1)):
shell_Tracef0("ClickSelect ="+
shell_GetEventHandler(b%,_%,2))
shell_Tracef0("ClickAdjust ="+
shell_GetEventHandler(b%,_%,3)):
shell_Tracef0("Redraw ="+
shell_GetEventHandler(b%,_%,4)):
shell_Tracef0("Keypress ="+
shell_GetEventHandler(b%,_%,5))
shell_Tracef0("Drag ="+
shell_GetEventHandler(b%,_%,6)):
shell_Tracef0("Menu Warning ="+
shell_GetEventHandler(b%,_%,7)):
shell_Tracef0("HelpTag ="+
shell_GetEventHandler(b%,_%,8)):n%=
shell_GetEventMenu(2,b%,_%):
h$="None"
shell_Tracef0("Menu handle =&"+h$):
shell_HeapManagerInit(F$,gG%):
_heap_code%900:
("LOAD "+F$+"heapcode "+
~_heap_code%):
_heap_code%+0,gG%:
shell_HeapBlockExtend(MF%,lD%):
_heap_code%+&C,MF%,lD%:=MF%
shell_HeapBlockFetch(lD%):
_heap_code%+4,DB%,lD%:=DB%
shell_HeapBlockReturn(
PA%):
shell_HeapBlockExists(PA%)
_heap_code%+8,PA%
PA%=0:
shell_HeapBlockExists(DB%):
DB%<&8000
99,"No heapblock defined at this address"
shell_HeapBlockInfo(DB%):
shell_HeapBlockInfo(PA%):
29,6,!(_heap_code%+28),PA%
,,,Q:=Q
shell_HeapBlockExtendMid(PA%,kA%,TF%):
UF%:UF%=
shell_HeapBlockInfo(PA%):
_heap_code%+&C,PA%,kA%:
&400F1,_U%!&94,PA%+TF%,_U%!&94,PA%+TF%+kA%,UF%-kA%:=PA%
shell_OSVarExists(WB%,AA$):
&20023,AA$,WB%,-1,0,0
shell_OSVarGetVal(WB%,qA%,AA$,u):
BA$,C,CG%:
&20023,AA$,WB%,qA%,0,-3*(u=
,,C,CG%,x%:
C-1:BA$=BA$+
(WB%?y%):
y%:=BA$
shell_OSReadCommandArg(v):
mD%,V$,d%:V$="":d%=0:
mD%?d%<>0:V$+=
(mD%?d%):d%+=1:
1:V$=
34)+1):V$=
34)+2)
shell_StringStripTrailing(B$,X$):
B$,1)=X$:B$=
(B$)-1):
shell_StringStripLeading(B$,X$):
B$,1)=X$:B$=
B$,2):
shell_StringStripAll(B$,X$):
E,F:E=
B$,X$):
B$,F-1)+
B$,F+1)
E:=B$
shell_StringPadTrailing(B$,X$,KB%):
(B$)<KB%:B$=B$+
(B$),X$):
shell_StringPadLeading(B$,X$,KB%):
(B$)<KB%:B$=
(B$),X$)+B$:
shell_StringUpperCase(B$):
(B$)>0
(B$):
B$,y%,1)>="a"
B$,y%,1)<="z"
B$,y%,1)=
B$,y%,1))
shell_StringExchange(B$,DA$,hA$):
B$,DA$)
0sA%=
B$,DA$):B$=
B$,sA%-1)+hA$+
B$,sA%+
shell_StringArrayGetLongest(A$(),FD%):
y%,GD%:GD%=0:
(A$(y%))>GD%
(A$(y%))
y%:=GD%
mem_to_string(ZF%,d%,PG%):
ZF%?d%<>PG%:B$+=
(ZF%?d%):d%+=1:
shell_FileLength(W$):
x%,YD%,CD%,KB%,TC%,B$:
8,5,W$
x%,,YD%,CD%,KB%,TC%:=KB%
shell_TraceOn:_U%!&64=_U%!&64
1<<9:
shell_BroadcastMessage(&43B00,"ShellDBug:TraceOn"):
shell_TraceOff:
(_U%!&64
(1<<9))
_U%!&64=_U%!&64
(1<<9)
shell_BroadcastMessage(&43B00,"ShellDBug:TraceOff"):
shell_TraceInit(o$):
YA%,a%,D$,C$:
o$<>""
(o$):_U%!44=YA%
shell_HeapBlockFetch(256):C$=
shell_OSVarGetVal(a%,256,"Obey$Dir",1):D$=
shell_Leaf(C$),2):
shell_BroadcastMessage(&43B00,"ShellDBug:Init Debug messages from "+D$):
shell_HeapBlockReturn(a%):
_U%!&64
_U%!&64=(_U%!&64
1<<4)
shell_TraceIsOn:
_U%!&64
(1<<9)
shell_Tracef0(VA$):
shell_TraceIsOn)
_U%!44<>-1
YA%=_U%!44:
#YA%,VA$
_U%!&94>0
shell_BroadcastMessage(&43B00,"ShellDBug:Trace "+VA$)
shell_Tracef2(DB%):
("MEDIT "+
~DB%):
shell_TraceExit:
_U%!44<>-1
#(_U%!44):_U%!44=-1
shell_AttachHotKey(XA$,QC%,LC%,oC%,d$,b%,Y$,Z$):
z%,d%,c%,CA%,WA%,oD%:oD%=
_U%!60=0
23_U%!60=
shell_HeapBlockFetch(24):d%=0:_U%!&B4=1
d%=_U%!&B4*24:_U%!60=
shell_HeapBlockExtend(_U%!60,24):_U%!&B4=(_U%!&B4)+1
:z%=_U%!60:
"F1":WA%=385
"F2":WA%=386
"F3":WA%=387
"F4":WA%=388
"F5":WA%=389
"F6":WA%=390
"F7":WA%=391
"F8":WA%=392
"F9":WA%=393
"F10":WA%=458
"F11":WA%=459
WA%=(
XA$)-64:oD%=
WA%+=16
WA%+=32
:c%=z%+d%:c%!0=WA%:c%?4=QC%:c%?5=LC%:c%?6=oC%:c%!8=
shell_HeapBlockFetch(
d$+1):CA%=c%!8:$CA%=d$:
shell_IsWindowStatic(b%)=
shell_MessageNoArgs("SHELLMSG09")
:c%!&C=b%:c%!16=
shell_HeapBlockFetch(
Y$+1):CA%=c%!16:$CA%=Y$:c%!20=
shell_HeapBlockFetch(
Z$+1):CA%=c%!20:$CA%=Z$:
shell_HotKeyProcess(WA%):
z%,q%,m%,e%,t%,p$,Y$,Z$:
LC%,QC%,oC%,mA%,pA%,qB%,IH%,d%:
w%,r%:z%=_U%!60:q%=_U%!&B4*24:m%=
:e%=0:
z%!e%=WA%
e%+=24
e%>=q%:
qdc%=z%+e%:p$=$(c%!8):
shell_Tracef0("HotKeyProcess:Template name is '"+p$+"'"):
(p$<>""
c%!&C=0)
shell_CreateWindow(p$,t%):
shell_Tracef0("HotKeyProcess:Creating new dynamic window (handle is &"+
~t%+")"):r%=
shell_HeapBlockFetch(36):r%!0=t%:
&400CB,,r%:mA%=(r%!4-r%!&C)/2:pA%=(r%!16-r%!8)/2:
shell_HeapBlockReturn(r%)
:Y$=$(c%!16):
Y$<>""
shell_Tracef0("HotKeyProcess:Calling Pre-Open FN '"+Y$+"'"):
c%!&C>0
("FN"+Y$+"("+
c%!&C+")")
("FN"+Y$+"("+
t%+")")
shell_Tracef0("HotKeyProcess:No Pre-Open FN registered")
shell_IsWindowStatic(c%!&C)
shell_OpenWindowStatic(c%!&C)
c%!&C>0
shell_MessageNoArgs("SHELLMSG09")
shell_OpenWindowDynamic2(t%,mA%,pA%)
:Z$=$(c%!20):
Z$<>""
shell_Tracef0("HotKeyProcess:Calling Post-Open FN '"+Z$+"'"):
c%!&C>0
("FN"+Z$+"("+
c%!&C+")")
("FN"+Z$+"("+
t%+")")
shell_Tracef0("HotKeyProcess:No Post-Open FN registered")
p$="":Y$="":Z$="":w%=
shell_WindowCentreOnPointer(t%):
p%,iC%,mA%,pA%:iC%=
shell_HeapBlockFetch(20):
&400CF,,iC%:r%=
shell_HeapBlockFetch(36):r%!0=t%:
&400CB,,r%:mA%=(r%!4-r%!&C)/2:pA%=(r%!16-r%!8)/2:
shell_WindowMoveTo(t%,iC%!0+mA%,iC%!4-pA%)
shell_HeapBlockReturn(r%):
shell_HeapBlockReturn(iC%):
shell_WindowCentreOnScreen(t%):
p%,HD%,ID%,AB%,bA%,cC%,JC%:
&20035,-1,4
,,cC%:
&20035,-1,5
,,JC%:
&20035,-1,&B
,,HD%:
&20035,-1,&C
,,ID%:HD%=HD%<<cC%:ID%=ID%<<JC%:r%=
shell_HeapBlockFetch(36):r%!0=t%:
&400CB,,r%:AB%=(r%!&C-r%!4)
ebA%=(r%!16-r%!8):
shell_WindowMoveTo(t%,(HD%/2)-(AB%/2),(ID%-bA%)/2):
shell_HeapBlockReturn(r%):
shell_OpenWindowStaticNewView(b%):
shell_OpenWindow(b%,
,-1):
shell_OpenWindowStatic(h%):
shell_IsWindowStatic(h%)=
shell_OpenWindow(h%,0,-1)
shell_InitHelpSystem(F$,dG%):
GA$,FA%,wA%,c$,qD%,kB%:_U%!&D4=0:
_U%!&D8<>0
shell_HeapBlockReturn(_U%!&D8)
@_U%!&D8=0:
shell_ScanForHelp:
GA$=" -DieWithTask"
GA$=""
_U%!&64
F$="":wA%=
shell_HeapBlockFetch(256):c$=
shell_OSVarGetVal(wA%,256,
shell_GetAppName+"Res$Path",-1):
shell_HeapBlockReturn(wA%):
:FA%=
c$,","):
FA%>0
shell_FileExists(
c$,FA%-1)+
shell_GetAppName)
c$,FA%-1)+
shell_GetAppName:
shell_StrongHlpChkFiles(F$)
c$,FA%+1)
shell_FileExists(c$+
shell_GetAppName)
?F$=c$+
shell_GetAppName:
shell_StrongHlpChkFiles(F$)
shell_OK(
shell_MessageOneArg("SHELLMSG26",
shell_GetAppName))
F$<>""
shell_FileExists(F$)
shell_StrongHlpChkFiles(F$)
shell_MessageOneArg("SHELLMSG33",F$)
kB%=0
shell_StrongHlpMsg("Help_Install "+F$+GA$):_U%!&64=_U%!&64
shell_HelpWord(HA$):
MH%,c%,EA%:EA%=
shell_HeapBlockFetch(512):
_U%!&D0=-1
shell_OSVarExists(EA%,"StrongHelp$Dir")
&600DE,"<StrongHelp$Dir>":
_U%!&D8<>0
shell_HeapBlockReturn(_U%!&D8)
&<_U%!&D8=
shell_HeapBlockFetch(
HA$+1):c%=_U%!&D8:$c%=HA$
shell_HeapBlockReturn(EA%):
shell_OK(
shell_MessageNoArgs("SHELLMSG11"))
shell_StrongHlpMsg("Help_Word "+HA$)
shell_HeapBlockReturn(EA%):
shell_StrongHlpMsg(t$):
shell_BroadcastMessage(&43B00,t$):
shell_ScanForHelp:
cB%,JD%:cB%=
shell_HeapBlockFetch(256):
:cB%!&C=0:
&400E7,19,cB%,-2,_U%!&D4
,,JD%:_U%!&D4=_U%!&D4+1:
JD%<>-1
(_U%!&D4)>64:
JD%<>-1
R@cB%!0=24:cB%!&C=0:cB%!16=&400C6:cB%!20=JD%:
&400E7,17,cB%,0
shell_HeapBlockReturn(cB%):
shell_BroadcastMessage(vG%,t$):
AA%,tD%:tD%=(
t$+30)
3:AA%=
shell_HeapBlockFetch(tD%):AA%!&C=0:AA%!16=vG%:$(AA%+20)=t$+
(0):AA%!0=tD%:
&600E7,17,AA%,0:
shell_HeapBlockReturn(AA%):
shell_WindowToggleBackIcon(
shell_WindowToggleFlags(b%,1<<24):
shell_WindowToggleCloseIcon(
shell_WindowToggleFlags(b%,1<<25):
shell_WindowToggleTitleBar(
shell_WindowToggleFlags(b%,1<<26):
shell_WindowToggleToggleIcon(
shell_WindowToggleFlags(b%,1<<27):
shell_WindowToggleHScrollBar(
shell_WindowToggleFlags(b%,1<<30):
shell_WindowToggleAdjustSizeIcon(
shell_WindowToggleFlags(b%,1<<29):
shell_WindowToggleVScrollBar(
shell_WindowToggleFlags(b%,1<<28):
shell_WindowToggleFlags(
b%,BC%):
a%,l%,DD%,h%:
shell_Tracef0("WindowToggleFlags:wh%=&"+
~b%):DD%=
shell_WindowIsOpen(b%):a%=
shell_HeapBlockFetch(&64+(
shell_WindowCountIcons(b%)*32)):a%!0=b%:
&400CC,,a%:l%=a%!32:l%=(l%
BC%):a%!32=l%:
&400C3,,a%
&400C1,,a%+4
h%:!a%=h%:
&400C5,,a%
shell_HeapBlockReturn(a%):
h%<>b%
shell_UpdateWindowHandle(b%,h%):b%=h%
shell_ListClickSelect:
z%,e%,q%,c%,CA%:z%=_U%!&C:q%=
shell_HeapBlockInfo(z%):
shell_Tracef0(" "):
shell_Tracef0("List of ClickSelect events:"):
shell_Tracef0(" "):
shell_Tracef0("Window Icon FN")
shell_Tracef0("-----------------------------------------------------------"):e%=0:
:c%=z%!(e%+20):CA%=z%+e%:
shell_HeapBlockExists(c%)
$c%<>""
shell_Tracef0(
shell_StringPadTrailing(
shell_GetWindowIdentifier(CA%!0),".",&C)+" "+
shell_StringPadLeading(
CA%!4," ",6)+" "+$c%)
:e%+=48:
(e%>=q%):
shell_Tracef0(" "):
shell_ListClickAdjust:
z%,e%,q%,c%,CA%:z%=_U%!&C:q%=
shell_HeapBlockInfo(z%):
shell_Tracef0(" "):
shell_Tracef0("List of ClickAdjust events:"):
shell_Tracef0(" "):
shell_Tracef0("Window Icon FN")
shell_Tracef0("-----------------------------------------------------------"):e%=0:
:c%=z%!(e%+24):CA%=z%+e%:
shell_HeapBlockExists(c%)
$c%<>""
shell_Tracef0(
shell_StringPadTrailing(
shell_GetWindowIdentifier(CA%!0),".",&C)+" "+
shell_StringPadLeading(
CA%!4," ",6)+" "+$c%)
:e%+=48:
(e%>=q%):
shell_Tracef0(" "):
shell_ListHelpTags:
z%,e%,q%,c%,CA%:z%=_U%!&C:q%=
shell_HeapBlockInfo(z%):
shell_Tracef0(" "):
shell_Tracef0("List of attached help tags:"):
shell_Tracef0(" "):
shell_Tracef0("Window Icon Tag")
shell_Tracef0("-----------------------------------------------------------"):e%=0:
:c%=z%!(e%+44):CA%=z%+e%:
shell_HeapBlockExists(c%)
$c%<>""
shell_Tracef0(
shell_StringPadTrailing(
shell_GetWindowIdentifier(CA%!0),".",&C)+" "+
shell_StringPadLeading(
CA%!4," ",6)+" "+$c%)
:e%+=48:
(e%>=q%):
shell_Tracef0(" "):
shell_MemFill(kC%,oE%,lE%):
I%,KD%,vD%:KD%=oE%
4:vD%=oE%
KD%>0
(KD%*4)
4:kC%!(I%-1)=lE%:
vD%>0
.kC%=kC%+(KD%*4):
vD%-1:kC%?I%=lE%:
shell_AttachFontMenu(b%,f%,J$,WA$):
shell_FontMenuInit:
"FontMenu_Select",""+
0,_U%!260
,n%:_U%!&FC=n%:
shell_EventAdd(b%,f%,0,-2,J$):
shell_Tracef0("AttachFontMenu:Attaching font menu"):
WA$<>""
shell_AttachMenuMaker(b%,f%,WA$)
shell_AttachFontSubMenu(VB%,E$,J$):
LH%,n%,c%,g%:
shell_FontMenuInit:
"FontMenu_Select",""+
0,_U%!260
&45BCE,VB%,n%:
&45BCC,,
:_U%!&FC=n%:
shell_EventListMenuWarn(VB%,n%,E$,J$):
shell_Tracef0("AttachFontSubMenu:Attaching font menu &"+
~n%):
shell_FontMenuInit:
("RMEnsure FontMenu 1.16 RMLoad <EvntShell$Path>FontMenu"):
("RMEnsure FontMenu 1.16 Error Couldn't load FontMenu module"):
_U%!&F0=-1
"FontMenu_Create"
_U%!&F0
shell_FontMenuSelectFont("",
shell_FontMenuSelectFont(u$,wD%):
c%,SB%:
shell_HeapBlockExists(_U%!&F4)
shell_HeapBlockReturn(_U%!&F4)
WH_U%!&F4=
shell_HeapBlockFetch(
u$+1):c%=_U%!&F4:$c%=u$:
wD%<>0
wD%=1
ZB_U%!260=wD%:
"FontMenu_Select",u$,_U%!260
,SB%:
SB%<>_U%!&FC
shell_FontMenuUpdatePtr(SB%):_U%!&FC=SB%
shell_Tracef0("FontMenuSelectFont:Font is '"+u$+"'"):
shell_FontMenuGetLastSelectedFont:
shell_HeapBlockExists(_U%!&F4)
c%=_U%!&F4:=$c%
shell_FontMenuUpdatePtr(e%):
z%,g%:
shell_Tracef0("FontMenuUpdatePtr:Started.."):
shell_HeapBlockExists(_U%!&DC)
shell_Tracef0("FontMenuUpdatePtr:HeapBlock found.."):z%=_U%!&DC:g%=0:
shell_Tracef0("FontMenuUpdatePtr:Substituting ptr.."):z%!(g%+8)=e%:g%+=&C:
z%!g%=-1
shell_MenuUpdateHandle(nE%,pE%):
q%,e%,i%,n%:q%=
shell_HeapBlockInfo(_U%!&C)-8:e%=0:m%=
:i%=_U%!&C:
:n%=i%!(e%+8):
n%=nE%
i%!(e%+8)=pE%
+e%+=48:
(e%>=q%):
_U%!24=nE%
_U%!24=pE%
shell_FindFont(
e$,LD%,MD%,
xD%):
shell_FontIsAvailable(e$,LD%,MD%)
e$="Trinity.Medium"
&40081,,e$,LD%*16,MD%*16,0,0
shell_FontIsAvailable(e$,LD%,MD%):
&40081,0,e$,LD%*16,MD%*16,0,0
&40082,xD%:=
shell_CheckSelection(qG%):
c%,g%:c%=_U%!256:
_U%!24=_U%!&FC
qG%!g%<>c%!g%
g%+=4:
c%!g%=-1:=g%
shell_MenuGetItemAddress(n%,sE%):
g%,uB%:
&45BC7,n%
:uB%=n%+28+((sE%!g%)*24):n%=uB%!4:g%+=4:
sE%!g%=-1:=uB%
shell_GetLastMouseXPos:=_U%!272
shell_GetLastMouseYPos:=_U%!276
shell_UpdateWindowHandle(VA%,MA%):
shell_Tracef0("UpdateWindowHandle:Updating stored window handles"):
shell_Tracef0("UpdateWindowHandle:old handle=&"+
~VA%):
shell_Tracef0("UpdateWindowHandle:new handle=&"+
~MA%):
MA%<>VA%
_U%!28=VA%
_U%!28=MA%
!_Q%=VA%
!_Q%=MA%
shell_FixEventBlock(VA%,MA%,_U%!&C,48):
shell_FixEventBlock(VA%,MA%,_U%!96,16):
shell_FixEventBlock(VA%,MA%,_U%!72,24):
shell_FixEventBlock(VA%,MA%,_U%!92,24):
shell_FixEventBlock2(VA%,MA%,_U%!&68,16):
shell_FixEventBlock2(VA%,MA%,_U%!332,32)
shell_UpdateStaticWindowHandle(VA%,MA%):
shell_UpdateWindowHandleList(VA%,MA%)
shell_FixEventBlock(VA%,MA%,i%,d%):
e%,q%:
shell_HeapBlockExists(i%)
shell_HeapBlockInfo(i%)-8:
(i%!e%=VA%)
i%!e%=MA%
:e%+=d%:
(e%>=q%)
shell_FixEventBlock2(VA%,MA%,i%,d%):
e%,q%:e%=4:
shell_HeapBlockExists(i%)
q%=!i%:
(i%!e%=VA%)
i%!e%=MA%
:e%+=d%:
(e%>=q%)
shell_IconSelectAll(b%):
a%,I%:a%=
shell_HeapBlockFetch(&7D0):I%=a%+64:!a%=b%:a%!8=1<<21:a%!&C=1<<21:
&400D6,!a%,I%,5<<21,0<<21:
!I%>-1:a%!4=!I%:
&400CD,,a%:I%+=4:
shell_HeapBlockReturn(a%):
shell_IconDeselectAll(b%):
a%,I%:a%=
shell_HeapBlockFetch(&7D0):I%=a%+64:!a%=b%:a%!8=0:a%!&C=1<<21:
&400D6,!a%,I%,5<<21,1<<21:
!I%>-1:a%!4=!I%:
&400CD,,a%:I%+=4:
shell_HeapBlockReturn(a%):
shell_Message_SaveDesktop(Q%):
JA$:JA$="Run "+
shell_GetAppDir+
&C,2,Q%!20,JA$,
shell_MessagesInit(H$,
uE%):
qA%,l%:
3,"Cannot open message file '"+H$+"'"
&41500,,H$
l%,,qA%:
uE%=0
shell_HeapBlockFetch(qA%)
30,6,,,17+
,,OD%:$(OD%+16)=H$:
&41501,OD%,OD%+16:
shell_Tracef0("MessagesInit:Message resource file '"+H$+"' loaded"):
shell_PrinterOnLine:
vE%,wE%:vE%=
(-4):
2,1,0,1,0,1,0:
>30:wE%=
(-4)<vE%):*FX21,3
3:=wE%
shell_AttachBumpHandler(b%,f%,xE%,yE%,WG%,ZG%,zE%,iG%,KA$,LA$):
o%,d%,c%,CA%,vA%:d%=
shell_GetEventListOffset2(b%,xE%,_U%+&68,16,
):o%=_U%!&68+d%:o%!0=b%:o%!4=xE%:o%!8=zE%:o%!&C=
shell_HeapBlockFetch(24):vA%=o%!&C:vA%!0=f%:vA%!4=WG%:vA%!8=ZG%
KA$>0
q>vA%!&C=
shell_HeapBlockFetch((
KA$)+1):CA%=vA%!&C:$CA%=KA$
vA%!&C=0
LA$>0
w>vA%!16=
shell_HeapBlockFetch((
LA$)+1):CA%=vA%!16:$CA%=LA$
vA%!16=0
iG%=-1
vA%!20=1
vA%!20=0
~od%=
shell_GetEventListOffset2(b%,yE%,_U%+&68,16,
):o%=_U%!&68+d%:o%!0=b%:o%!4=yE%:o%!8=zE%*(-1):o%!&C=vA%:
shell_HandleBumpIcons(d%,b%,f%,_button%):
DH%,SA%,o%,lC%,_temp$,AE%:
dB%,BE%,CE%:
AH%,DC%:
_button%<>2
Yo%=_U%!&68+d%:_U%!288=b%:_U%!292=f%:_U%!296=d%:dB%=o%!8:BE%=
(-1):CE%=
(-2):
dB%=dB%*8
dB%=dB%*2
dB%=dB%*4
:SA%=o%!&C:AE%=SA%!16:
AE%<>0
C_temp$=
shell_IconGetData(b%,SA%!0):lC%=
("FN"+$AE%+"(_temp$)")
shell_IconGetData(b%,SA%!0))
_button%=1
_new_val%=lC%+((dB%)*(-1))
_new_val%=lC%+dB%
SA%!20=0
_new_val%>SA%!8
_new_val%=SA%!8
_new_val%<SA%!4
_new_val%=SA%!4
_new_val%>SA%!8
_new_val%=SA%!4
_new_val%<SA%!4
_new_val%=SA%!8
:DC%=SA%!&C:
DC%<>0
1_new_val$=
("FN"+$DC%+"(_new_val%,_button%)")
_new_val$=
_new_val%
_new_val%<>lC%
shell_IconPutData(b%,SA%!0,_new_val$,-1)
shell_WindowSetSpriteArea(t%,DE%):
a%,MA%,dC%,EE%:a%=
shell_HeapBlockFetch(&64+(
shell_WindowCountIcons(t%)*32)):!a%=t%:
&400CC,,a%:a%!68=DE%:
shell_IconSetSpriteArea(a%!60,a%+76,DE%):
(a%!88)>0
dC%=0
(a%!88)-1:EE%=a%+92+dC%*32:
shell_IconSetSpriteArea(EE%!16,EE%+20,DE%):
&400C3,,a%:
&400C1,,a%+4
MA%<>t%
shell_UpdateWindowHandle(t%,MA%):t%=MA%
shell_HeapBlockReturn(a%):=t%
shell_IconSetSpriteArea(l%,mC%,FG%):
3)=2)
256)<>0)
mC%!4=FG%
shell_StrongHlpIsAvailable:
TB%,EA%:TB%=
_U%!&64
kEA%=
shell_HeapBlockFetch(256):TB%=
shell_OSVarExists(EA%,"StrongHelp$Dir"):
shell_HeapBlockReturn(EA%)
:=TB%
shell_MenuNew(T$):
shell_Tracef0("MenuNew:Creating new menu (title is '"+T$+"')"):
&45BC1,,T$
h%:=h%
shell_MenuAdd(h%,MA$,J$):
shell_Tracef0("MenuAdd:Adding item ("+MA$+")"):
J$<>""
&45BC2,h%,MA$,J$
&45BC2,h%,MA$
:=dA%
shell_MenuTick(dA%,iA%):
&45BC9,dA%,iA%:
shell_MenuTickOnly1(XA%,FA%):
&45BD1,XA%,FA%:
shell_MenuTickOnly2(dA%):
&45BD1,dA%:
shell_MenuShade(h%,iA%):
&45BCB,h%,iA%:
shell_MenuDotted(dA%,iA%):
&45BCA,dA%,iA%:
shell_MenuColours(dA%,eD%,fD%):
&45BD0,dA%,eD%,fD%:
shell_MenuWritable(dA%,iA%,qA%,x$):
&45BCD,dA%,iA%,qA%,x$:
shell_MenuPutData(dA%,O$):
&45BC8,dA%,O$:
shell_MenuCallHandler(t%,_h_blk%):
("FN"+$t%+"(_h_blk%)")
shell_AttachOpenWindow(b%,A$):
a%,c%,d%:
shell_Tracef0("AttachOpenWindow:Attaching OpenWindow Handler"):
shell_MessageOneArg("SHELLMSG27","AttachOpenWindow")
shell_GetEventListOffset(b%,-1,_U%+304,&C,
):a%=_U%!304+d%:a%!0=b%:a%!4=-1:a%!8=
shell_HeapBlockFetch(
(A$)+1):c%=a%!8:$c%=A$:
shell_AttachCloseWindowHandler(b%,A$):
a%,c%,d%:
shell_Tracef0("AttachCloseWindowHandler:Attaching CloseWindow Handler"):
shell_MessageOneArg("SHELLMSG27","AttachCloseWindow")
shell_GetEventListOffset(b%,-1,_U%+308,&C,
):a%=_U%!308+d%:a%!0=b%:a%!4=-1:a%!8=
shell_HeapBlockFetch(
(A$)+1):c%=a%!8:$c%=A$:
shell_SpriteRename(XC%,kA$,oA$):
46,512+26,XC%,
shell_SpriteGetPtr(XC%,kA$),oA$:
shell_SpriteAreaSave(XC%,H$):
46,512+&C,XC%,H$:
shell_EnsurePoll:
:DA%=
shell_Poll_I(0,_U%!&94):
shell_Action(DA%):
DA%=0:
shell_WimpGetVersion:=_U%!316
shell_OSCheckVersion(KG%):=
shell_OSModuleCheckVersion("UtilityModule",KG%)
shell_OSModuleCheckVersion(pA$,y):
a%,_B%,M$:a%=
shell_HeapBlockFetch(256):
("Set Module$Check Y"):
("RMEnsure "+pA$+" "+
y+" Set Module$Check N"):
35,"Module$Check",a%,256,0,0
,,_B%:a%?_B%=&D:
("Unset Module$Check"):M$=$a%
shell_HeapBlockReturn(a%):
M$="N"
shell_MessageSendDataLoad(x%,R$):
AA%:AA%=
shell_HeapBlockFetch(256):AA%!0=256:AA%!4=0:AA%!&C=0:AA%!16=5:AA%!20=0:AA%!28=0:AA%!32=0:AA%!36=0:AA%!40=x%:$(AA%+44)=R$+
&400E7,17,AA%,0:
shell_HeapBlockReturn(AA%):
shell_MenuMakeFromFile(T$,jA$,o$):
h%,X%,B$,k%:
shell_FileExists(o$)
shell_MenuNew(T$):X%=
(o$):
#X%:k%=
shell_MenuAdd(h%,B$,jA$):
shell_BinarySearch(_search_term$,dA$,k$,NG%,FE%):
_pos%,CB%,_wp$,PD%,FH%,GE%,HE%,FF%,m%,IE%:FE%+=1:IE%=
:CB%=FE%:PD%=0:_pos%=CB%
2:HE%=NG%-1:GE%=FE%:
:_wp$=
("FN"+dA$+"(_pos%)"):JE%=_pos%:
_search_term$=_wp$
("FN"+k$+"(_search_term$,_wp$)")
+GE%=_pos%:CB%=_pos%-HE%:_pos%=CB%
2+PD%
HE%=_pos%:PD%=_pos%:CB%=GE%-_pos%:_pos%=CB%
2+PD%
FF%=JE%
!FF%=JE%:
shell_IconLastClicked:=_U%!32
shell_MenuGetNrItems(XA%):
n%,w%,GF%:
&45BC7,XA%
n%:n%+=28:
:w%=(n%?0
&80):GF%+=1:n%+=24:
w%:=GF%
shell_MenuGetNrDotted(XA%):
n%,w%,FD%:
&45BC7,XA%
n%:n%+=28:
:w%=(n%?0
&80):
(n%?0
FD%+=1
n%+=24:
w%=-1:=FD%
shell_MenuGetItemHandler(XA%,nC%):
eA%,e%,NA$:eA%=
shell_HeapBlockFetch(8):eA%!0=nC%:eA%!4=-1:
&45BC4,XA%,eA%
NA$=""
NA$=$(e%)
shell_HeapBlockReturn(eA%):=NA$
shell_MenuGetItemText(XA%,nC%):
eA%,e%,I$:eA%=
shell_HeapBlockFetch(8):eA%!0=nC%:eA%!4=-1:
&45BC4,XA%,eA%
,,e%:I$=$(e%!&C):
shell_HeapBlockReturn(eA%):=I$
shell_MenuGetItemHandle(XA%,nC%):
eA%,e%,h%:eA%=
shell_HeapBlockFetch(8):eA%!0=nC%:eA%!4=-1:
&45BC4,XA%,eA%
,,e%:h%=e%!8:
shell_HeapBlockReturn(eA%):=h%
shell_MenuGetItemHeight(XA%):
&45BC7,XA%
n%:=n%!20
shell_MenuCalculateHeight(XA%):
bA%:bA%=
shell_MenuGetNrItems(XA%)*
shell_MenuGetItemHeight(XA%):=bA%+(
shell_MenuGetNrDotted(XA%)*24)
shell_MenuSortItems(n%,gA$,cG%,kC%,KE%):
LE%:LE%=
shell_MenuGetNrItems(n%)-1:_shell_MS_handle%=n%:
KE%>LE%
KE%=LE%
&406C0:
shell_QuickSort(gA$,"_shell_MS_swap",cG%,0,KE%):
&406C1:
shell_QuickSort(k$,q$,_asc%,_start%,_end%):
_lo%,_h%,_F%,_temp%,k%:_lo%=_start%:_hi%=_end%:_F%=
:_temp%=_lo%-1+
(_hi%+1-_lo%):k%=
("FN"+q$+"(_lo%,_temp%)"):
_asc%=0
("FN"+k$+"(_lo%,_hi%)")
Z(k%=
("FN"+q$+"(_lo%,_hi%)"):_F%=
("FN"+k$+"(_hi%,_lo%)")
_(k%=
("FN"+q$+"(_hi%,_lo%)"):_F%=
_hi%=_hi%-1
_lo%=_lo%+1
_lo%=_hi%:
_start%<_lo%-1
shell_QuickSort(k$,q$,_asc%,_start%,_lo%-1)
_hi%+1<_end%
shell_QuickSort(k$,q$,_asc%,_hi%+1,_end%)
_shell_MS_swap(QD%,RD%):
r$,s$,KF%,LF%:r$=
shell_MenuGetItemText(_shell_MS_handle%,QD%):s$=
shell_MenuGetItemText(_shell_MS_handle%,RD%):KF%=
shell_MenuGetItemHandle(_shell_MS_handle%,QD%):LF%=
shell_MenuGetItemHandle(_shell_MS_handle%,RD%)
shell_MenuPutData(KF%,s$):
shell_MenuPutData(LF%,r$):=0
_shell_MS_comp(QD%,RD%):
r$,s$:r$=
shell_MenuGetItemText(_shell_MS_handle%,QD%):s$=
shell_MenuGetItemText(_shell_MS_handle%,RD%):
shell_WindowSetTitleRightJust(
p%,aA%,h%,mB%:mB%=
shell_WindowIsOpen(b%):p%=
shell_HeapBlockFetch(&64+(
shell_WindowCountIcons(b%)*32)):!p%=b%:
&400CC,,p%:aA%=p%!60:
(1<<3))
shell_Tracef0("WindowSetTitleRightJust:title flags = &"+
~aA%):
shell_Tracef0("WindowSetTitleRightJust:Horizontally centred bit set.."):
shell_Tracef0("WindowSetTitleRightJust:Unsetting horizontally centred bit.."):aA%=aA%
(1<<3)
shell_Tracef0("WindowSetTitleRightJust:title flags = &"+
~aA%)
shell_Tracef0("WindowSetTitleRightJust:Horizontally centred bit NOT set..")
shell_Tracef0("WindowSetTitleRightJust:Setting right justified bit.."):aA%=aA%
(1<<9):p%!60=aA%:
&400C3,,p%:
&400C1,,p%+4
b%<>h%
shell_Tracef0("WindowSetTitleRightJust:Updating window handle..."):
shell_UpdateWindowHandle(b%,h%):b%=h%
shell_OpenWindow(h%,0,0)
shell_HeapBlockReturn(p%):
shell_WindowSetTitleCentreJust(
p%,aA%,h%,mB%:mB%=
shell_WindowIsOpen(b%):p%=
shell_HeapBlockFetch(&64+(
shell_WindowCountIcons(b%)*32)):!p%=b%:
&400CC,,p%:aA%=p%!60:
shell_Tracef0("WindowSetTitleCentreJust:title flags = &"+
~aA%)
shell_Tracef0("WindowSetTitleCentreJust:t_flags% AND (1 << 3) = "+
~(aA%
(1<<3))):
(1<<3))=0
shell_Tracef0("WindowSetTitleCentreJust:Horizontally centred bit not set.."):
shell_Tracef0("WindowSetTitleCentreJust:Setting horizontally centred bit.."):aA%=aA%
(1<<3):
shell_Tracef0("WindowSetTitleCentreJust:title flags = &"+
~aA%):p%!60=aA%
&400C3,,p%:
&400C1,,p%+4
b%<>h%
shell_Tracef0("WindowSetTitleCentreJust:Updating window handle..."):
shell_UpdateWindowHandle(b%,h%):b%=h%
shell_OpenWindow(h%,0,0)
shell_HeapBlockReturn(p%):
shell_IconGetSelectedIcons(b%,jB%,
OF%:OF%=(jB%<<16)+(1<<21):
&400D6,b%,s%,OF%,(jB%<<16)+(1<<21):
shell_GetLastMouseButton:=_U%!320
shell_GetLastWindowClicked:=_U%!28
shell_GetLastIconClicked:=_U%!32
shell_IconIndirSize(EB%,l%,mC%,X%):
qA%,QF%,g%,SD%:
&800100)=256
"qA%=mC%!8:
(mC%!4<>-1)
AQF%=mC%!4:
#X%=EB%+QF%:g%=0:
:SD%=
#X%:g%+=1:
SD%<32:qA%+=+g%
qA%=0
:=qA%
shell_StrongHlpChkFiles(F$):
shell_FileExists(F$+".HelpData")
<kB%=-1:
shell_MessageOneArg("SHELLMSG32","HelpData")
shell_FileExists(F$+".Index")
9kB%=-1:
shell_MessageOneArg("SHELLMSG32","Index")
shell_CaretMoveCaret(b%,DA%):
u%,SF%,g%,e%,nB%:g%=0:e%=0:u%=
shell_HeapBlockFetch(&800):
&400D3,,u%:
u%!4<>-1
<SF%=u%!4:
&400D6,b%,u%,&40E000,&E000:
u%!g%=SF%
e%=g%
g%+=4:
u%!g%=-1:
0:nB%=!u%
1:nB%=u%!(g%-4)
u%!(e%+4)<>-1
nB%=u%!(e%+4)
nB%=!u%
nB%=u%!(e%-4)
nB%=u%!(g%-4)
&400D2,b%,nB%,-1,-1,-1,
shell_IconGetData(b%,nB%))
shell_HeapBlockReturn(u%):
shell_CaretPutFirstIcon(b%):
shell_CaretMoveCaret(b%,0):
shell_CaretPutLastIcon(b%):
shell_CaretMoveCaret(b%,1):
shell_CaretPutNextIcon(b%):
shell_CaretMoveCaret(b%,2):
shell_CaretPutPrevIcon(b%):
shell_CaretMoveCaret(b%,3):
shell_TemplateFileInfo(H$,
VC%:VC%=
RO3_Present:
shell_TemplateFileInfo3(H$,xA%,HA%,w%)
shell_TemplateFileInfo2(H$,xA%,HA%,w%)
shell_TemplateFileInfo2(H$,
FA%,EC%,eB%:
EA%,X%,QE%,DG%:
g%,SD%,RE%,oA%,qC%,l%:FA%=0:HA%=0:EC%=0:eB%=0:w%=0:
shell_FileExists(H$)
w%=-1
shell_FileType(H$)<>&FEC
w%=-2
{UEA%=
shell_HeapBlockFetch(&D):X%=
(H$):
#X%=16:
&C,4,X%,EA%,4:EB%=!EA%:
EB%>0
HA%+=1:SE%=0:
&C,4,X%,EA%,4:QE%=!EA%:
&C,4,X%,EA%,4:DG%=!EA%:
&C,4,X%,EA%,&C:RE%=
#X%=EB%+56:
&C,4,X%,EA%,4:l%=!EA%:
#X%=EB%+72:
&C,4,X%,EA%,&C:SE%+=
shell_IconIndirSize(EB%,l%,EA%,X%):
#X%=EB%+84:
&C,4,X%,EA%,4:oA%=!EA%:
oA%>0
qC%=0
oA%-1:
#X%=EB%+88+(qC%*32)+16:
&C,4,X%,EA%,4:l%=!EA%:
#X%=EB%+88+(qC%*32)+20:
&C,4,X%,EA%,&C:SE%+=
shell_IconIndirSize(EB%,l%,EA%,X%):
#X%=RE%:EC%+=SE%:
QE%>eB%
eB%=QE%
EB%=0:
shell_HeapBlockReturn(EA%):xA%=eB%+EC%
shell_TemplateFileInfo3(H$,
FA%,EC%,eB%,EB%:
g%,SD%,RE%,oA%,qC%,l%:FA%=0:HA%=0:EC%=0:eB%=0:EA%=
shell_HeapBlockFetch(&D):
&400D9,,H$:
:$EA%="*":
&400DB,,-1,,,,EA%,FA%
,xA%,HG%,,,,FA%:
FA%<>0
xA%>eB%
eB%=xA%
EC%+=HG%:HA%+=1
FA%=0:
&400DA:xA%=eB%+EC%:
shell_HeapBlockReturn(EA%):
RO3_Present:
a%,_B%,M$:a%=
shell_HeapBlockFetch(256):
("Set RO3$Check Y"):
("RMEnsure UtilityModule 3.00 Set RO3$Check N"):
35,"RO3$Check",a%,256,0,0
,,_B%:a%?_B%=&D:
("Unset RO3$Check"):M$=$a%:
shell_HeapBlockReturn(a%):
M$="N"
shell_WindowCountIcons(b%):
fB%,VC%,oA%:
(_U%!&64
1<<&A)
shell_Tracef0("WindowCountIcons:RISC OS 3 detected.."):
b%=-1
b%=-2
yfB%=
shell_HeapBlockFetch(88):!fB%=b%:
&400CC,,fB%+1:oA%=fB%!88:
shell_Tracef0("WindowCountIcons:nr_icons% = "+
shell_Tracef0("WindowCountIcons:RISC OS 3 NOT found.."):fB%=
shell_HeapBlockFetch(6000):
$!fB%=b%:
&400CC,,fB%:oA%=fB%!88
shell_Tracef0("WindowCountIcons:nr_icons% = "+
shell_HeapBlockReturn(fB%):=oA%
shell_SliderGetValue(h%):=(_U%!332+h%)!28
shell_HandleSlider(b%,f%,tA%):
KA%,LA%,RA%,a%,o%:
shell_Tracef0("HandleSlider:slider drag event found.."):o%=_U%!332+tA%:KA%=
shell_HeapBlockFetch(50):KA%!0=b%:KA%!4=o%!8:
&400CE,,KA%:a%=_U%!328:a%!0=0:a%!4=KA%!16-KA%!8:a%!8=f%:a%!&C=o%!&C:a%!16=o%
a%!24=o%!24:KA%!0=b%:
&400CB,,KA%:LA%=KA%!4-KA%!20:RA%=KA%!16-KA%!24:KA%!4=f%:
&400CE,,KA%:KA%!4=7:KA%!8+=LA%:KA%!&C+=RA%:KA%!16+=LA%:KA%!20+=RA%:KA%!24=KA%!8:KA%!28=KA%!&C:KA%!32=KA%!24+a%!4:KA%!36=KA%!20:
&400D0,,KA%:
shell_HeapBlockReturn(KA%)
_U%!&64=_U%!&64
1<<&B:
shell_Slider:
FB%,a%,UD%,sC%,b%,LA%,ZA$,NB%,_value%,k%:FB%=
shell_HeapBlockFetch(20):NB%=_U%!328:
&400CF,,FB%:b%=FB%!&C:sC%=NB%!8:UD%=!FB%:
UD%<>!NB%
shell_HeapBlockFetch(50):!a%=b%:
&400CB,,a%:LA%=UD%-a%!4:a%!4=sC%:
&400CE,,a%:
&400C4,,a%:a%!4=b%:a%!16=LA%:
&400C2,,a%+4:
&400D1,b%,a%!8,a%!&C,a%!8+NB%!4,a%!20:_value%=
(((LA%-a%!8)*&64)/NB%!4):c%=NB%!16:c%!28=_value%:
NB%!24<>-1
I$k%=
("FN"+$(NB%!24)+"(_value%)")
NB%!&C>=0
L7ZA$=
(_value%):
shell_IconPutData(b%,NB%!&C,ZA$,-1)
:!NB%=UD%:
shell_HeapBlockReturn(a%)
shell_HeapBlockReturn(FB%):
shell_GetEventListOffset2(b%,f%,i%,GB%,bC%):
q%,e%,m%,d%,JB%,c%:
(!i%=0
(!i%=0)
bE!i%=
shell_HeapBlockFetch(GB%+4):c%=!i%:c%!0=GB%:c%!4=0:c%!8=0:=4
:c%=!i%:q%=!c%:
shell_Tracef0("GetEventListOffset2:list size is "+
q%):e%=4:m%=
:d%=-1:JB%=-1:c%=!i%:
shell_Tracef0("GetEventListOffset2:window handle=&"+
~c%!e%):
JB%<0
(c%!e%=0
c%!e%+4=0)
JB%=e%
(c%!e%=b%)
f%=-1
d%=e%:m%=
c%!(e%+4)=f%
d%=e%:m%=
e%+=GB%
e%+=GB%
((e%>=(q%+4))
(d%=-1
JB%<0
Ud%=q%+4:!i%=
shell_HeapBlockExtend(!i%,GB%):c%=!i%:c%!0+=GB%:c%+=d%:c%!4=0:c%!8=0
d%=JB%
shell_SliderSetValue(h%,_value%):
o%,sC%,a%,YF%,UE%,VE%,WD%:
aF%,bF%:o%=_U%!332+h%:sC%=o%!4:b%=o%!0:YF%=o%!8:VE%=o%!&C:a%=
shell_HeapBlockFetch(50):a%!0=b%:a%!4=YF%:
&400CE,,a%:UE%=a%!16:WD%=a%!8:aF%=a%!&C:bF%=a%!20:a%!4=sC%:
&400CE,,a%
&400C4,,a%:a%!4=b%:
_value%>&64
_value%=&64
_value%<=0
_value%=0:a%!16=a%!8
a%!16=WD%+(UE%*(_value%/&64))-(WD%*(_value%/&64))
:o%!28=_value%:
&400C2,,a%+4:
&400D1,b%,WD%,aF%,UE%,bF%:
o%!24<>-1
("FN"+$(o%!24)+"(_value%)")
VE%>=0
shell_IconPutData(b%,VE%,
_value%,
shell_HeapBlockReturn(a%):
shell_AttachSliderHandler(b%,cF%,WC%,FC%,XD%,YE%,Q$):
o%,d%:d%=
shell_GetEventListOffset2(b%,WC%,_U%+332,32,
):o%=_U%!332+d%:o%!0=b%:o%!4=WC%:o%!8=cF%:o%!&C=FC%:o%!16=XD%:o%!20=YE%:
Q$<>""
2o%!24=
shell_HeapBlockFetch(
Q$+1):$(o%!24)=Q$
o%!24=-1
:o%!28=0:
_U%!328=0
_U%!328=
shell_HeapBlockFetch(24)
shell_AttachClickSelect(b%,WC%,"_shell_icondrag"):
shell_AttachClickSelect(b%,cF%,"_shell_icondrag2"):
XD%>=0
shell_AttachClickSelect(b%,XD%,"_shell_sliderbumpupS"):
shell_AttachClickSelect(b%,YE%,"_shell_sliderbumpdownS"):
shell_AttachClickAdjust(b%,XD%,"_shell_sliderbumpdownA"):
shell_AttachClickAdjust(b%,YE%,"_shell_sliderbumpupA")
_shell_icondrag(b%,f%):
shell_IconDragBox(b%,f%):=0
_shell_icondrag2(b%,f%):
OB%,o%,fA%,m%,WC%:o%=_U%!332:OB%=!o%:fA%=4:
shell_Tracef0("Event block size is "+
OB%):
o%!(fA%+8)=f%
:WC%=o%!(fA%+4)
:fA%+=32:
fA%>=OB%
shell_IconDragBox(b%,WC%):=0
_shell_sliderbumpupS(b%,f%):
k%:k%=
_shell_sliderbumpup(b%,f%,4):=0
_shell_sliderbumpupA(b%,f%):
k%:k%=
_shell_sliderbumpup(b%,f%,1):=0
_shell_sliderbumpdownS(b%,f%):
k%:k%=
_shell_sliderbumpdown(b%,f%,4):=0
_shell_sliderbumpdownA(b%,f%):
k%:k%=
_shell_sliderbumpdown(b%,f%,1):=0
_shell_sliderbumpup(b%,f%,lB%):
OB%,o%,fA%,m%,e%,_value%,GC%:
shell_Tracef0("In sliderbumpup routine"):o%=_U%!332:OB%=!o%:fA%=4:
shell_Tracef0("Event block size is "+
OB%):
lB%=4
GC%=16
GC%=20
o%!(fA%+GC%)=f%
:e%=fA%:_value%=o%!(e%+28):
shell_Tracef0("Current slider value = "+
_value%):
shell_Tracef0("Slider handle is = "+
:fA%+=32:
fA%>=OB%
shell_SliderSetValue(e%,_value%+1)
_shell_sliderbumpdown(b%,f%,lB%):
OB%,o%,fA%,m%,e%,_value%,GC%:
shell_Tracef0("In sliderbumpdown routine"):o%=_U%!332:OB%=!o%:fA%=4:
shell_Tracef0("Event block size is "+
OB%):
lB%=4
GC%=20
GC%=16
o%!(fA%+GC%)=f%
:e%=fA%:_value%=o%!(e%+28):
shell_Tracef0("Current slider value = "+
_value%):
shell_Tracef0("Slider handle is = "+
:fA%+=32:
fA%>=OB%
shell_SliderSetValue(e%,_value%-1)
shell_DeleteEventSlider(b%,f%):
d%,a%,q%,i%,c%,gF%:i%=_U%!332:
shell_GetEventListOffset2(b%,f%,_U%+332,32,
shell_Tracef0("DeleteEventSlider:offset% = "+
d%>=0
f%=-1
shell_Tracef0("DeleteEventSlider:Deleting Slider Event (all events for window handle &"+
~b%+")")
shell_Tracef0("DeleteEventSlider:Deleting Slider Event (window handle was &"+
~b%+" icon handle was "+
f%+")")
:q%=!i%:
d%=q%-32
shell_HeapBlockReturn(i%+d%+24):
shell_HeapBlockReturn(_U%!332):_U%!332=0:
shell_Tracef0("DeleteEventSlider:No Slider events now registered")
_U%!332=
shell_HeapBlockExtend(_U%!332,-32):i%=_U%!332:!i%-=32
a%=i%+d%:a%!0=0:a%!4=0:gF%=a%+24:
shell_HeapBlockReturn(gF%)
d%<0:
shell_OpenWindowDynamic(lA$,QA$,RA$):
t%,mA%,pA%,r%:
shell_CreateWindow(lA$,t%):
shell_Tracef0("OpenWindowDynamic:Creating new dynamic window (handle is &"+
~t%+")"):r%=
shell_HeapBlockFetch(36):r%!0=t%:
&400CB,,r%:mA%=(r%!4-r%!&C)/2
=pA%=(r%!16-r%!8)/2:
shell_HeapBlockReturn(r%):
_U%!20<>0
&400D4,,-1:k%=
shell_DeleteWindow(_U%!20)
:_U%!20=b%:
QA$<>""
shell_Tracef0("OpenWindowDynamic:Calling Pre-Open FN '"+QA$+"'"):k%=
("FN"+QA$+"("+
t%+")")
shell_Tracef0("OpenWindowDynamic:No Pre-Open FN")
shell_OpenWindowDynamic2(t%,mA%,pA%):
RA$<>""
shell_Tracef0("OpenWindowDynamic:Calling Post-Open FN '"+RA$+"'"):k%=
("FN"+RA$+"("+
t%+")")
shell_Tracef0("OpenWindowDynamic:No Post-Open FN")
shell_InteractiveHelpOn:
(_U%!&64
1<<&C)<>0
_U%!&64=_U%!&64
1<<&C
shell_InteractiveHelpOff:
(_U%!&64
1<<&C)<>0
_U%!&64=_U%!&64
1<<&C
shell_MessageSendPrintSave(ZE%,iF%):
iF%>1
_U%!336=iF%-1
_U%!336=0
shell_DoSendPrintSave(ZE%):
shell_DoSendPrintSave(ZE%):
GA%:GA%=
shell_HeapBlockFetch(256):GA%!0=256:GA%!&C=0:GA%!16=&80142:GA%!20=0:GA%!24=0:GA%!28=0:GA%!32=0:GA%!36=256:GA%!40=ZE%:$(GA%+44)="PrintOut"+
shell_Tracef0("MessageSendPrintSave:Sending PrintSave message..")
&400E7,18,GA%,GA%!20,GA%!24:
shell_HeapBlockReturn(GA%):
shell_HandlePrintFile(_Q%):
shell_Tracef0("HandlePrintFile:Message_PrintFile received"):
shell_HandlePrintError(_Q%):
shell_Tracef0("HandlePrintError:Message_PrintError received"):
shell_HandlePrintTypeOdd(_Q%):
shell_Tracef0("HandlePrintTypeOdd:Message_PrintTypeOdd received"):
shell_HandleSetPrinter(_Q%):
shell_Tracef0("HandleSetPrinter:Message_SetPrinter received"):
shell_PrinterDriverLoaded:
"XPDriver_Info"
;IB%:
shell_PrinterDriverGetName:
IB%,jF%:
"XPDriver_Info"
,,,,jF%;IB%:
shell_GetString(jF%)
shell_IconGetBGColour(b%,f%):
uA%,j%:j%=
shell_HeapBlockFetch(40):j%!0=b%:j%!4=f%:
&400CE,,j%:uA%=(j%!24>>28)
shell_HeapBlockReturn(j%):=uA%
shell_IconGetFGColour(b%,f%):
uA%,j%:j%=
shell_HeapBlockFetch(40):j%!0=b%:j%!4=f%:
&400CE,,j%:uA%=(j%!24>>24)
shell_HeapBlockReturn(j%):=uA%
shell_AttachPopupMenu(b%,oB%,FC%,n%,Q$):
shell_DoAttachPopupHandler(b%,oB%,FC%,n%,Q$,0):
shell_AttachColourPopupMenu(b%,oB%,FC%,n%,Q$):
shell_DoAttachPopupHandler(b%,oB%,FC%,n%,Q$,1):
shell_DoAttachPopupHandler(b%,oB%,FC%,n%,Q$,qB%):
o%,d%:d%=
shell_GetEventListOffset2(b%,oB%,_U%+340,24,
):o%=_U%!340+d%:o%!0=b%:o%!4=oB%:o%!8=FC%:
Q$<>""
2o%!&C=
shell_HeapBlockFetch(
Q$+1):$(o%!&C)=Q$
o%!&C=-1
:o%!16=qB%:o%!20=n%:
oB%>=0
shell_IconSetButtonType(b%,oB%,3)
shell_DoPopupSelect(_Q%,d%):
o%,Q$,_item_text$,w%,tC%:
BA%,bE%,cE%:o%=_U%!340+d%:BA%=!o%:tC%=o%!8:dE%=o%!&C:bE%=o%!16:XA%=o%!20:cE%=!_Q%:_item_text$=
shell_MenuGetItemText(XA%,cE%):w%=0:
dE%<>-1
=Q$=$(dE%):w%=
("FN"+Q$+"("+
BA%+","+
tC%+",_item_text$)")
w%<>0
dE%=-1
tC%>=0
_POPUP_TYPE_TEXT:
shell_IconPutData(BA%,tC%,_item_text$,
_POPUP_TYPE_WIMPCOLOUR:
shell_IconSetBGColour(BA%,tC%,cE%)
99,"Unknown Popup type in DoPopupSelect (type was "+
bE%+")"
shell_3DEnabled:
mF%,_3d%:
_U%!&64
(1<<&A)
6,&A1,&8C
,,mF%:
_3d%=
_3d%=
_3d%=
:=_3d%
shell_MenuDelete(h%,hG%):
e%,q%,i%:
h%<>0
&65BC3,h%,hG%:q%=
shell_HeapBlockInfo(_U%!&C)-8:i%=_U%!&C:
(i%!(e%+8)=h%)
i%!(e%+8)=0
e%+=48
(e%>=q%)
shell_HandleAttachedDataSave(_Q%,b%,f%):
tA%,a%,CC%,_name$,c%,k%:
shell_DataSaveCheckName(b%,f%):tA%=
shell_GetEventListOffset(b%,-1,_U%+72,24,
tA%>=0
ia%=_U%!72+tA%:CC%=a%!16:_name$=
shell_IconGetData(b%,CC%):c%=a%!20:
$c%<>""
("FN"+$c%+"(_name$)")
shell_WindowMoveToPopUpPos(BA%,yB%,nF%):
IC%,yA%,pF%,qF%,rF%,sF%:
tF%:IC%=
shell_HeapBlockFetch(40):IC%!0=BA%:IC%!4=yB%:
&400CE,,IC%:pF%=IC%!16:qF%=IC%!20:yA%=
shell_HeapBlockFetch(40):yA%!0=BA%:
&400CB,,yA%:rF%=yA%!4:sF%=yA%!16:yA%!0=nF%
&400CB,,yA%:tF%=yA%!16-yA%!8:
shell_WindowMoveTo(nF%,rF%+pF%,sF%+qF%-(tF%/2)):
shell_HeapBlockReturn(IC%):
shell_HeapBlockReturn(yA%):
shell_WindowScrollTo(BA%,eC%,fC%):
ZA%:ZA%=
shell_HeapBlockFetch(36):!ZA%=BA%:
&400CB,,ZA%:ZA%!20=eC%:ZA%!24=fC%:
shell_WindowIsOpen(BA%)
&400C5,,ZA%
&400C5,,ZA%:
&400C6,,ZA%
shell_HeapBlockReturn(ZA%):
shell_WindowScrollBy(BA%,eC%,fC%):
ZA%:ZA%=
shell_HeapBlockFetch(36):!ZA%=BA%:
&400CB,,ZA%:ZA%!20+=eC%:ZA%!24+=fC%:
shell_WindowIsOpen(BA%)
&400C5,,ZA%
&400C5,,ZA%:
&400C6,,ZA%
shell_HeapBlockReturn(ZA%):
shell_WindowSetBackgroundColour(
t%,gE%):
p%,h%,uF%,HB%,oA%:oA%=
shell_WindowCountIcons(t%):uF%=
shell_WindowIsOpen(t%):p%=
shell_HeapBlockFetch(&64+(oA%*32)):p%!0=t%:
&400CC,,p%:p%?39=gE%:_shell_open_behind%=p%!28:HB%=p%!28:
&400C3,,p%
&400C1,,p%+4
h%:p%!0=h%:
&400CC,,p%:
t%<>h%
shell_UpdateWindowHandle(t%,h%):t%=h%
shell_OpenWindow(h%,0,HB%)
shell_HeapBlockReturn(p%):
shell_WindowSetForegroundColour(
t%,gE%):
p%,h%,mB%,HB%:mB%=
shell_WindowIsOpen(b%):p%=
shell_HeapBlockFetch(&64+(
shell_WindowCountIcons(t%)*32)):p%!0=t%:
&400CC,,p%:p%?38=gE%:_shell_open_behind%=p%!28:HB%=p%!28:
&400C3,,p%:
&400C1,,p%+4
t%<>h%
shell_Tracef0("WindowSetForegroundColour:Updating window handle..."):
shell_UpdateWindowHandle(t%,h%):t%=h%
shell_OpenWindow(h%,0,HB%)
shell_HeapBlockReturn(p%):
shell_InstallLib(U$):
aD%:aD%=
(U$):
aD%=0
#aD%:
1,"Unable to install "+U$
#aD%:
U$:U$=
U$,&A):
U$,"."):U$=
U$,".")+1):
("FN_shell_"+U$+"Init")
shell_TemplatesInit(l$,
pG%):
uC%,hE%,wF%,xA%:
xF%,FA%,bD%,R$,HA%,IB%,w%:
yF%,vC%:bD%=
shell_HeapBlockFetch(&C):FA%=0:HA%=0:xF%=
shell_FileLength(l$):sG%=
shell_HeapBlockFetch(xF%):uC%=sG%:
shell_TemplateFileInfo(l$,xA%,HA%,w%):
shell_HeapBlockFetch(4+(20*HA%)):_U%!4=wC%:zF%=
shell_HeapBlockFetch(xA%):hE%=zF%:wF%=zF%+xA%:HA%=0:vC%=4:
&600D9,,l$
;IB%:
shell_MessageTwoArgs("SHELLMSG34","template",l$)
:$bD%="*":
&400DB,,uC%,hE%,wF%,_U%!&E8,bD%,FA%
,,hE%,,,R$,FA%:
FA%<>0
wC%!vC%=uC%:$(wC%+vC%+4)=R$:wC%!(vC%+16)=-1:vC%+=20:
shell_Tracef0("TemplatesInit: Template Loaded: "+R$):yF%=(uC%!84)*32:uC%+=(88+yF%):HA%+=1
FA%=0:
&400DA:_U%!0=HA%
shell_MessageTwoArgs("SHELLMSG35","template",l$)
shell_MessageTwoArgs("SHELLMSG36",l$,"template")
shell_HeapBlockReturn(bD%):pG%=0:!wC%=HA%:
shell_WindowLoaded(N$):
d%,iE%:d%=
shell_GetWindowListOffset(N$):
d%>=0
shell_GetWindowListOffset(N$):
d%,HA%,zA%,g%:
(N$)>&B
shell_MessageOneArg("SHELLMSG02",N$)
iHA%=
shell_GetNrTemplatesLoaded:zA%=
shell_WindowListGetAddr+4:g%=0:d%=-1:
$(((zA%)+(20*g%))+4)=N$
d%=g%*20
:g%+=1:
d%<>-1
g%>(HA%-1):=d%
shell_GetWB(N$):
d%,yA%,zA%:d%=
shell_GetWindowListOffset(N$):zA%=
shell_WindowListGetAddr+4:
d%>=0
yA%=zA%!d%
shell_MessageOneArg("SHELLMSG03",N$)
:=yA%
shell_GetWindowHandleList(N$):
d%,jA%,zA%:d%=
shell_GetWindowListOffset(N$):zA%=
shell_WindowListGetAddr+4:
d%>=0
jA%=!(zA%+d%+16)
shell_MessageOneArg("SHELLMSG03",N$)
:=jA%
shell_CreateWindowStatic(N$,
BA%):
HC%:HC%=
shell_GetWB(N$):HC%!64=_U%!16:
&400C1,,HC%
shell_StaticWindowListAddHandle(BA%):
shell_WindowListAddHandle(BA%):
shell_WindowListAddHandle(BA%):
AG%,IA%,e%:
zA%:AG%=
shell_GetWindowListOffset(N$)+16:IA%=
shell_WindowListGetAddr+4+AG%:
!IA%=-1
f:!IA%=
shell_HeapBlockFetch(8):e%=!IA%:e%!0=BA%:e%!4=-1
shell_Tracef0("DEBUG::Extending window handle list for window '"+N$+"'"):
shell_Tracef0("DEBUG::Window handle is &"+
BA%):!IA%=
shell_HeapBlockExtend(!IA%,4):zA%=!IA%:e%=0:
zA%!e%<>-1:e%+=4:
:zA%!(e%+0)=BA%:zA%!(e%+4)=-1
shell_GetWindowIdentifier(h%):
IA%,HA%,e%,g%,m$:HA%=
shell_GetNrTemplatesLoaded:IA%=
shell_WindowListGetAddr+4:m$="":
-1,-2:m$="iconbar"
IA%!16<>-1
7jA%=IA%!16:e%=0:
jA%!e%<>-1:
jA%!e%=h%
m$=$(IA%+4)
e%+=4:
:g%+=1:IA%+=20:
m$<>""
g%=HA%
m$=""
shell_MessageOneArg("SHELLMSG38",
shell_RemoveHandleFromWindowList(h%):
IA%,HA%,I%,e%:HA%=
shell_GetNrTemplatesLoaded:IA%=
shell_WindowListGetAddr+4:
IA%!16<>-1
4jA%=IA%!16:e%=0:
jA%!e%<>-1:
jA%!e%=h%
jA%!e%=0
e%+=4:
:IA%+=20:
shell_UpdateWindowHandleList(VA%,MA%):
IA%,HA%,I%,e%:HA%=
shell_GetNrTemplatesLoaded:IA%=
shell_WindowListGetAddr+4:
IA%!16<>-1
7jA%=IA%!16:e%=0:
jA%!e%<>-1:
jA%!e%=VA%
jA%!e%=MA%
e%+=4:
:IA%+=20:
shell_GetNrTemplatesLoaded:
IA%:IA%=
shell_WindowListGetAddr:=!IA%
shell_WindowListGetAddr:=_U%!4
shell_WindowListPrint:
IA%,HA%,I%,e%:HA%=
shell_GetNrTemplatesLoaded:
shell_TraceOn:IA%=
shell_WindowListGetAddr+4:
shell_Tracef0(""):
shell_Tracef0("Current Window List ("+
(HA%)+" templates)")
shell_Tracef0("-----------------------------------------"):
shell_Tracef0($(IA%+4)+":"):
IA%!16=-1
shell_Tracef0("No windows defined for this identifier")
jA%=IA%!16:e%=0:
jA%!e%<>-1:
shell_Tracef0(" window handle &"+
~(jA%!e%)):e%+=4:
:IA%+=20:
shell_Tracef0(""):
shell_TraceOff:
_shell_StaticList_Init:gA%=0:=0
shell_StaticWindowListAddHandle(h%):
d%,g%,c%:
gA%=0
shell_Tracef0("StaticWindowListAddHandle:Creating new list"):
shell_Tracef0("StaticWindowListAddHandle:Window handle is &"+
~h%):gA%=
shell_HeapBlockFetch(8):gA%!0=h%:gA%!4=-1
shell_Tracef0("StaticWindowListAddHandle:Searching for window handle &"+
~h%):d%=
shell_SearchStatic(h%):
d%=-1
shell_Tracef0("StaticWindowListAddHandle:Not found - adding window handle to list"):
shell_Tracef0("StaticWindowListAddHandle:Window handle is &"+
~h%):d%=
shell_SearchStatic(0):
d%=-1
shell_Tracef0("StaticWindowListAddHandle:Extending window handle list"):g%=0:
gA%!g%<>-1:g%+=4:
:gA%=
shell_HeapBlockExtend(gA%,4):c%=gA%+g%:c%!0=h%:c%!4=-1
shell_Tracef0("StaticWindowListAddHandle:Found unused space in list"):c%=gA%+d%:c%!0=h%
shell_RemoveStaticWindowFromList(BA%):
d%,g%,m%:m%=
:g%=0:
gA%>0
gA%!g%=BA%
:gA%!g%=0
:g%+=4:
gA%!g%<>-1
shell_UpdateStaticWindowHandle(VA%,MA%):
shell_Tracef0("UpdateStaticWindowHandle:Correcting static window list.."):d%=
shell_SearchStatic(VA%):gA%!d%=MA%:
shell_SearchStatic(h%):
m%,g%:m%=-1:g%=0:
gA%<>0
gA%!g%<>-1:
gA%!g%=h%
m%=g%:=m%
:g%+=4:
shell_IsWindowStatic(BA%):
-1,-2:w%=
_U%!20:w%=
shell_SearchStatic(BA%)>-1